【发布时间】:2012-12-25 21:01:30
【问题描述】:
让我有下一个 javascript 对象。现在我想克隆它但没有一些字段。例如,我想要没有字段 "lastName" 和 "cars.age" 的克隆对象
输入
{
"firstName":"Fred",
"lastName":"McDonald",
"cars":[
{
"type":"mersedes",
"age":5
},
{
"model":"bmw",
"age":10
}
]
}
输出(克隆)
{
"firstName":"Fred",
"cars":[
{
"model":"mersedes"
},
{
"model":"bmw"
}
]
}
我可以做类似的事情
var human = myJson
var clone = $.extend(true, {}, human)
delete clone.lastName
_.each(clone.cars, function(car))
{
delete car.age
}
你知道更简单的解决方案吗?
【问题讨论】:
-
无法使用
$.extend过滤掉克隆的成员,但您可以推出自己的实现来省略字段... -
我将创建一个函数,该函数接受要克隆的对象和要在新对象中删除(或包含)的属性数组。在 jQuery 中没有内置方法可以做到这一点。
-
Underscore.js 包含
pluck函数,这是您想要的一种逆版本:指定您想要包含的内容,而不是您想要省略的内容。也许这可以为您的实施提供一个起点? -
@Henrik
_.pluck只包含值,没有键 -
@Ilya:哎呀,没关系。
标签: javascript jquery clone deep-copy