下划线js替换对象中的项目

时间:2012-05-10 20:01:14

标签: javascript node.js underscore.js

使用Underscorejs,是否有人知道如何简单地替换对象的一个​​属性?

例如,如果我有这个:

var obj = {
 "id" : 123,
 "date" : 142002020,
 "name" : "somename",
 "active" : 1
}

现在我想将active设置为0;

我可以使用_.collect并检查'有效'然后更新它并返回一个新变量,但似乎有更好的方法,我只是没有看到它。

谢谢!

1 个答案:

答案 0 :(得分:5)

为什么不只是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)