在 Javascript 中修改对象

Modifying an object in Javascript?

本文关键字:对象 修改 Javascript      更新时间:2023-09-26

我有以下类型的对象:

{ body: { entry: { body: '' }, context: '' },
  contextids: 
   [ { uid: 'ff992fa0-817a-11e4-bea0-299f5e3c3819',
       name: 'deemeetreesNotebook' },
     { uid: 'ff992fa1-817a-11e4-bea0-299f5e3c3819', name: 'public' },
     { uid: 'ff992fa2-817a-11e4-bea0-299f5e3c3819', name: 'ideas' },
     { uid: 'ff992fa3-817a-11e4-bea0-299f5e3c3819',
       name: 'thingsToLearn' },
     { uid: 'ff992fa4-817a-11e4-bea0-299f5e3c3819',
       name: 'wayToRussia' },
     { uid: 'ff992fa5-817a-11e4-bea0-299f5e3c3819',
       name: 'polysingularity' },
     { uid: 'ff992fa6-817a-11e4-bea0-299f5e3c3819',
       name: 'infranodus' },
     { uid: 'ff992fa7-817a-11e4-bea0-299f5e3c3819',
       name: 'artmital' } ],
  internal: 1 }

我想通过这个对象重申,并以仅保留name等于某个字符串的contextids的方式对其进行修改(例如 thingsToLearn )。

从原始对象中删除不需要的上下文 ID 的好方法是什么?

谢谢!

循环、检查、拼接:

var nameToKeep = "someId";
for (var i = 0; i < data.contextids.length; i++) {
    if (data.contextids[i].name != nameToKeep) {
        data.contextids.splice(i, 1);
        i--;
    }
}

听起来像是Array.filter的工作:

var d = {
  body: {
    entry: {
      body: ''
    },
    context: ''
  },
  contextids: [{
    uid: 'ff992fa0-817a-11e4-bea0-299f5e3c3819',
    name: 'deemeetreesNotebook'
  }, {
    uid: 'ff992fa1-817a-11e4-bea0-299f5e3c3819',
    name: 'public'
  }, {
    uid: 'ff992fa2-817a-11e4-bea0-299f5e3c3819',
    name: 'ideas'
  }, {
    uid: 'ff992fa3-817a-11e4-bea0-299f5e3c3819',
    name: 'thingsToLearn'
  }, {
    uid: 'ff992fa4-817a-11e4-bea0-299f5e3c3819',
    name: 'wayToRussia'
  }, {
    uid: 'ff992fa5-817a-11e4-bea0-299f5e3c3819',
    name: 'polysingularity'
  }, {
    uid: 'ff992fa6-817a-11e4-bea0-299f5e3c3819',
    name: 'infranodus'
  }, {
    uid: 'ff992fa7-817a-11e4-bea0-299f5e3c3819',
    name: 'artmital'
  }],
  internal: 1
};
d.contextids = d.contextids.filter(function(item) {
  return item.name === "thingsToLearn";
  });
alert(JSON.stringify(d.contextids));