1

Underscorejsを使用して、オブジェクトの1つの属性を単純に置き換える方法を知っている人はいますか?

たとえば、私がこれを持っている場合:

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

ここで、アクティブを0に設定します。

'active'を使用_.collectして確認し、それを更新して新しい変数に戻すこともできますが、もっと良い方法があるようです。表示されていないだけです。

ありがとう!

4

1 に答える 1

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)
于 2012-05-10T20:02:55.033 に答える