当flag为true时,如何使用lodash替换数组中的值

时间:2017-05-26 12:13:56

标签: javascript lodash

我有JavaScript对象:

myData = {
      items: [
        {
          flag: false,
          text: "good text"
        },
        {
          flag: true,
          text: "good text"
        },
        {
          flag: false,
          text: "good text"
        }
      ]
    }

如何在flag = true

的任何地方更改文字

例如,只需要将第二个对象从"good text"更改为"bad text",因为我的示例中只有此对象具有flag = true

我想在JavaScript中使用Lodash这样做。

4 个答案:

答案 0 :(得分:1)

如果你必须使用lodash,这应该有效:

_.forEach(myData.items, function (item) {
  if (item.flag) {
    item.text = 'bad text';
  }
});

答案 1 :(得分:0)

您可以使用此代码段更改文字。

myData.items = _.map(_.get(myData, 'items'), (item) => {
  if (item.flag) {
    item.text = "new text"
  }
  return item;
});

答案 2 :(得分:0)

你真的不需要lodash ......

这是一个不使用它的解决方案

myData.items.forEach(item => item.text = item.flag ? "bad text" : item.text)

const myData = {
      items: [
        {
          flag: false,
          text: "good text"
        },
        {
          flag: true,
          text: "good text"
        },
        {
          flag: false,
          text: "good text"
        }
      ]
    };

console.log(JSON.stringify(myData.items));

myData.items.forEach(item => item.text = item.flag ? "bad text" : item.text);

console.log(JSON.stringify(myData.items));

答案 3 :(得分:0)

如何:_(myData.items).filter('flag').each(x => x.text='bad text');