使用 Underscorejs,有人知道如何简单地替换对象的一个属性吗?
例如,如果我有这个:
var obj = {
"id" : 123,
"date" : 142002020,
"name" : "somename",
"active" : 1
}
现在我想将 active 设置为 0;
我可以使用_.collect
并检查“活动”然后更新它并返回到一个新变量,但似乎有更好的方法,我只是没有看到它。
谢谢!
使用 Underscorejs,有人知道如何简单地替换对象的一个属性吗?
例如,如果我有这个:
var obj = {
"id" : 123,
"date" : 142002020,
"name" : "somename",
"active" : 1
}
现在我想将 active 设置为 0;
我可以使用_.collect
并检查“活动”然后更新它并返回到一个新变量,但似乎有更好的方法,我只是没有看到它。
谢谢!
你为什么不只是obj['active'] = 0
,你不需要下划线来改变一个属性。
编辑
如果您需要找到一个嵌套键,也许您可以使用递归函数。
var obj = {
'foo' : {
'bar' : {
'active' : 1
}
}
}
function replaceKey (obj, key, value) {
var _obj = _(obj)
_obj.each(function (v, k) {
if (k === key) {
obj[k] = value
} else if (obj[k] === Object(obj[k])) {
replaceKey(obj[k], key, value)
}
})
return _obj;
}
console.log('should be active:', obj.foo.bar.active === 1)
replaceKey(obj, 'active', 0)
console.log('should not be active:', obj.foo.bar.active === 0)