如何向Array中的Object添加新属性

时间:2018-06-08 21:33:31

标签: javascript arrays object

我有一个对象数组

var array = [ {type: 'news', id: 1}, {type: 'contacts', id: 7}, {type: 'messages', id: 11} ]

我需要一个可以向Object添加属性和值的决定。哪个定义要添加属性的对象,我有一个类型

这样的东西
function(arr = array, type = 'news', property = 'visibility ', value = 'yes') {

    var obj = arr.find(item => item.type === type)

    /* magic */


    return result


}


result = [ {type: 'news', id: 1, visibility: 'yes'}, {type: 'contacts', id: 7}, {type: 'messages', id: 11} ]

2 个答案:

答案 0 :(得分:0)

简单的答案是(如果您可以改变现有对象):

obj[property] = value

如果不允许突变,那么:

function(arr = array, type = 'news', property = 'visibility ', value = 'yes') {
  return arr.map((item) => {
    if(item.type === type) {
      return {...item, [property]: value}
    }
    return item
  })
}

答案 1 :(得分:0)

假设该数组可以包含多个object === type,您可以使用函数forEachObject.assing为每个匹配的对象设置新属性。

此方法会改变原始数组中的对象。



function findNSet(arr, type, property, value) {
  arr.forEach(o => {
    if (o.type === type) Object.assign(o, {[property]: value});
  });
}

let array = [{type: 'news',  id: 1}, {  type: 'contacts',  id: 7}, {  type: 'messages',  id: 11}];

findNSet(array, 'news', 'visibility', 'yes');
console.log(array);

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