最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Underscore js replace item in object - Stack Overflow

programmeradmin1浏览0评论

Using Underscorejs, would anyone know how to simply replace one attribute of an object?

For example, if I have this:

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

Now I want to set active to 0;

I could use _.collect and check for 'active' then update it and return to a new variable, but it seems like there's a better way, I'm just not seeing it.

Thanks!

Using Underscorejs, would anyone know how to simply replace one attribute of an object?

For example, if I have this:

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

Now I want to set active to 0;

I could use _.collect and check for 'active' then update it and return to a new variable, but it seems like there's a better way, I'm just not seeing it.

Thanks!

Share Improve this question asked May 10, 2012 at 20:01 dzmdzm 23.6k51 gold badges152 silver badges229 bronze badges 1
  • Did you ever find the solution to this? – nikjohn Commented Apr 7, 2016 at 13:10
Add a ment  | 

1 Answer 1

Reset to default 5

Why don't you just obj['active'] = 0, you don't need underscore for changing an property.

EDIT

If you need to find a nested key maybe you could use a recursive function.

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)
发布评论

评论列表(0)

  1. 暂无评论