我有一个对象数组
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} ]
答案 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
,您可以使用函数forEach
和Object.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; }