vue如何将数组对象中值相同的对象取出并且将键名拼接成字符串输出
时间: 2023-05-27 16:03:08 浏览: 136
可以使用reduce方法,遍历数组对象,判断对象的值是否相同,如果相同则将键名拼接成字符串,最终将结果存储到一个新数组中。
示例代码:
```javascript
let arr = [
{ name: '张三', age: 20 },
{ name: '李四', age: 20 },
{ name: '王五', age: 30 },
{ name: '赵六', age: 30 }
]
let result = arr.reduce((prev, curr) => {
let index = prev.findIndex(item => item.value === curr.age)
if (index === -1) {
prev.push({ value: curr.age, names: [curr.name] })
} else {
prev[index].names.push(curr.name)
}
return prev
}, [])
result.forEach(item => {
console.log(`${item.value}: ${item.names.join(', ')}`)
})
```
输出结果:
```
20: 张三, 李四
30: 王五, 赵六
```
相关问题
vue如何将数组对象中值相同的对象取出并且将键名以@字符拼接成字符串输出
可以通过遍历数组来找到值相同的对象,并将键名以@字符拼接成字符串输出。具体代码如下:
```javascript
let arr = [
{ name: 'Tom', age: 18 },
{ name: 'Jim', age: 20 },
{ name: 'Lucas', age: 18 },
{ name: 'Mike', age: 20 }
];
let obj = {};
arr.forEach(item => {
let key = item.age.toString();
if (obj[key]) {
obj[key].push(item.name);
} else {
obj[key] = [item.name];
}
});
for (let key in obj) {
console.log(`${key}@${obj[key].join('@')}`);
}
```
输出结果为:
```
18@Tom@Lucas
20@Jim@Mike
```
说明:上述代码中,我们首先创建一个空对象obj来存储结果,然后遍历数组arr,将每个对象的age属性值拼接成字符串作为obj的键名key,如果该键名已经存在,则将当前对象的name属性值添加到该键名的值中,如果不存在,则创建一个键名为key的数组,并将当前对象的name属性值添加到该数组中。最后,我们遍历obj对象,将每个键名和值拼接成字符串输出。
阅读全文