相关疑难解决方法(0)

在JavaScript中深度克隆对象的最有效方法是什么?

克隆JavaScript对象的最有效方法是什么?我已经看到obj = eval(uneval(o));被使用,但这是非标准的,只有Firefox支持.

我做过类似的事情,obj = JSON.parse(JSON.stringify(o));但质疑效率.

我也看到了具有各种缺陷的递归复制功能.
我很惊讶没有规范的解决方案.

javascript clone object

5181
推荐指数
48
解决办法
189万
查看次数

如何正确克隆JavaScript对象?

我有一个对象,x.我想把它复制为对象y,这样改变y就不要修改了x.我意识到复制从内置JavaScript对象派生的对象将导致额外的,不需要的属性.这不是问题,因为我正在复制我自己的一个文字构造的对象.

如何正确克隆JavaScript对象?

javascript clone javascript-objects

2922
推荐指数
42
解决办法
176万
查看次数

将Underscore模块与Node.js一起使用

我一直在学习node.js和模块,并且似乎无法使Underscore库正常工作......似乎我第一次使用Underscore中的函数时,它会覆盖_对象的结果我的函数调用.有谁知道发生了什么?例如,这是来自node.js REPL的会话:

Admin-MacBook-Pro:test admin$ node
> require("./underscore-min")
{ [Function]
  _: [Circular],
  VERSION: '1.1.4',
  forEach: [Function],
  each: [Function],
  map: [Function],
  inject: [Function],
  (...more functions...)
  templateSettings: { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g },
  template: [Function] }
> _.max([1,2,3])
3
> _.max([4,5,6])
TypeError: Object 3 has no method 'max'
    at [object Context]:1:3
    at Interface.<anonymous> (repl.js:171:22)
    at Interface.emit (events.js:64:17)
    at Interface._onLine (readline.js:153:10)
    at Interface._line (readline.js:408:8)
    at Interface._ttyWrite (readline.js:585:14)
    at ReadStream.<anonymous> (readline.js:73:12)
    at ReadStream.emit (events.js:81:20)
    at ReadStream._emitKey (tty_posix.js:307:10)
    at ReadStream.onData (tty_posix.js:70:12)
> _
3
Run Code Online (Sandbox Code Playgroud)

当我自己制作Javascript文件并导入它们时,它们似乎正常工作.也许Underscore图书馆有一些特别的东西?

module node.js underscore.js

146
推荐指数
4
解决办法
11万
查看次数

在没有jQuery的情况下在node.js上组合或合并JSON

我有多个JSON这样的人

var object1 = {name: "John"};
var object2 = {location: "San Jose"};
Run Code Online (Sandbox Code Playgroud)

它们不是嵌套或类似的东西.只是基本不同的领域.我需要将它们组合成node.js中的一个单独JSON的像这样:

{name: "John", location: "San Jose"}
Run Code Online (Sandbox Code Playgroud)

我可以使用jQuery就好了.以下是浏览器中的一个工作示例:

http://jsfiddle.net/qhoc/agp54/

但是如果我在node.js中这样做,我不想加载jQuery(这有点过度使用,加上node.js'jQuery在我的Windows机器上不起作用).

那么有一种简单的方法可以在$.extend()没有jQuery的情况下做类似的事情吗?

javascript jquery json node.js

73
推荐指数
8
解决办法
12万
查看次数

如何在Express应用程序中使用npm安装的jQuery?

我有一个node.js + express应用程序,我用npm安装了jQuery.

app.js我使用的文件中

var jquery = require('jquery');
Run Code Online (Sandbox Code Playgroud)

在html文件头中我包含了使用jQuery的javascript,我得到了"jQuery未定义".这是订单还是我错过了什么?

javascript jquery node.js express

31
推荐指数
4
解决办法
3万
查看次数

克隆json对象和更改值也会改变原始对象

我想知道为什么会这样?

我有一个存储在var myObj中的json对象:

var myObj = JSON.parse(fs.readFileSync('json/data.json', 'utf8'));
Run Code Online (Sandbox Code Playgroud)

然后我通过以下方式从原始对象中获取克隆:

var modObj = myObj;
Run Code Online (Sandbox Code Playgroud)

之后我从clone中删除空值:

cleansedObj = removeEmpty(modObj);
Run Code Online (Sandbox Code Playgroud)

为什么这也会改变原始的myObj并从中删除空值?

这是功能:

function removeEmpty(obj) {
  Object.keys(obj).forEach(function(key) {
    if (obj[key] && typeof obj[key] === 'object') removeEmpty(obj[key])
    else if (obj[key] === "") delete obj[key]
  });
  return obj;
};
Run Code Online (Sandbox Code Playgroud)

我通过这样做找到了一种解决方法,但似乎是不成功的操作:

var cleansedObj = JSON.stringify(myObj);
cleansedObj = removeEmpty(JSON.parse(cleansedObj));
Run Code Online (Sandbox Code Playgroud)

谢谢!

javascript json object

3
推荐指数
1
解决办法
2675
查看次数