[英]How to add an object array property?
当读取属性name
,就把user3
的属性的user2
和相同属性到一个对象的属性name
等于a
值。
我要打印出来:
[
{
name: 'b',
user1: 'haha',
},
{
name: 'a',
user2: 'apple',
user3: 'xiaomi'
}
]
我的代码:
var data = [{ name: 'b', user1: 'haha', }, { name: 'a', user2: 'apple', }, { name: 'a', user3: 'xiaomi' } ] var arr = [] for (var i = 0; i < data.length; i++) { console.log(data[i].name) }
下面的代码将首先使您知道相同的name
字段,然后将其合并。
var make_unique = function(xs, key) {
// find same name fields
let tmp_result = xs.reduce(function(rv, x) {
(rv[x[key]] = rv[x[key]] || []).push(x);
return rv;
}, {});
// merge the same ones
return Object.keys(tmp_result).map(item => {
return tmp_result[item].reduce(function(rv, x) {
return Object.assign(rv,x)
}, {});
})
};
调用它:
make_unique(data,'name')
您可以使用for循环查找相同的元素,然后将其分配给另一个,然后使用splice方法从数组中删除找到的元素
var data = [{ name: 'b', user1: 'haha', }, { name: 'a', user2: 'apple', }, { name: 'a', user3: 'xiaomi' } ] for (var i=0 ; i<data.length;i++){ for(var j=i+1;j<data.length;j++){ if(data[i].name===data[j].name){ Object.assign(data[i],data[j]) data.splice(j,1) } } } console.log(data)
reduce
数据以创建一个键设置为名称值的对象,然后返回该对象的Object.values
:
var data = [{ name: 'b', user1: 'haha' }, { name: 'a', user2: 'apple' }, { name: 'a', user3: 'xiaomi' }]; function groupByName(arr) { return Object.values(data.reduce((acc, c) => { const { name, ...rest } = c; acc[name] = acc[name] || {}; acc[name] = { ...acc[name], name, ...rest }; return acc; }, {})); } const output = groupByName(data); console.log(output);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.