如何在数组中定位对象并将其替换为新对象?

时间:2018-04-02 16:31:24

标签: javascript arrays object

我有一个像这样的数组:

[
  {color: "blue"}, 
  {color: "red", size: "large"}, 
  {color: "green", size: "medium"}
]

显示我如何:

  1. 找到颜色为green
  2. 的对象
  3. 将该对象替换为{color: "green", size: "x-large"}

3 个答案:

答案 0 :(得分:2)

您可以使用函数find,然后修改找到的对象。



var array = [{color: "blue"}, {color: "red", size: "large"}, {color: "green", size: "medium"}],
    found = array.find(({color}) => color === 'green');

if (found) found.size = 'x-large';

console.log(array);

.as-console-wrapper { max-height: 100% !important; top: 0; }




答案 1 :(得分:2)

您可以使用map数组返回数组。

  

mkdirs方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。



map()




您也可以使用find

  

find()方法返回数组中第一个满足提供的测试函数的元素的值。否则返回undefined。

<强>样本

&#13;
&#13;
const arr= [
  {color: "blue"}, 
  {color: "red", size: "large"}, 
  {color: "green", size: "medium"}
];


let result = arr.map(obj=>{
 return obj.color=='green'? {color: "green", size: "x-large"}:obj;
})

console.log(result)
&#13;
&#13;
&#13;

答案 2 :(得分:1)

如果需要在现有对象中替换你可以使用forEach并检查颜色,否则如果需要返回一个新数组你可以使用map函数

var oldObj = [{
    color: "blue"
  },
  {
    color: "red",
    size: "large"
  },
  {
    color: "green",
    size: "medium"
  }
]
oldObj.forEach(function(item) {
  if (item.color === 'green') {
    item.size = 'x-medium';
  }
});
console.log(oldObj)