javascript - 如何在 JavaScript 中将对象数组中的列值与字符串值组合成单个对象
问题描述
我有一个数组,它有不止一行(它可以变化),如下所示。
const myArray = [{
name: 'user 100', name2: 'user200', name3: 'user300',
}, {
name: 'user 101', name2: 'user201', name3: 'user301',
}, {
name: 'user 102', name2: 'user202', name3: 'user302',
}];
我想将所有这些行合并/合并为 1,如下所示:
{
name: 'user 100 user 101 user 102',
name2: 'user200 user 201 user 203',
name3: 'user300 user 301 user 303',
}
解决方案
您可以使用Array.prototype.forEach()
and来做到这一点Object.entries()
:
const arr = [{
name: 'user 100', name2: 'user200', name3: 'user300',
}, {
name: 'user 101', name2: 'user201', name3: 'user301',
}, {
name: 'user 102', name2: 'user202', name3: 'user302',
}];
const result = {};
arr.forEach((item, index) => {
Object.entries(item).map(([key, value]) => {
result[key] = `${ (result[key] || '') } ${ value }`;
});
});
console.log(result);
可以使用Array.prototype.reduce()
代替来完成相同的操作Array.prototype.forEach()
:
const arr = [{
name: 'user 100', name2: 'user200', name3: 'user300',
}, {
name: 'user 101', name2: 'user201', name3: 'user301',
}, {
name: 'user 102', name2: 'user202', name3: 'user302',
}];
const combined = arr.reduce((result, item) => {
Object.entries(item).map(([key, value]) => {
result[key] = `${ (result[key] || '') } ${ value }`;
});
return result;
}, {});
console.log(combined);
推荐阅读
- laravel - Guzzle HTTP POST 返回 cURL 错误 7:无法连接到
端口 8083:连接被拒绝 - php - 如何检查 mysqli_fetch_array($result,MYSQLI_NUM) 是否成功获取?
- node.js - axios 为带有表单数据的发布请求返回 404
- javascript - 在不和谐服务器上每分钟获取在线用户列表
- python - 通过文件夹进行问题迭代并查找特定文件的时间戳
- javascript - 如何在我自己的 Slider 中创建指向特定幻灯片的链接?
- django - 问题单元测试使用 ThreadPoolExecutor 的 Django 代码
- nats.io - NATS.IO NATSNoRespondersException
- javascript - 如何使用 localhost 在移动设备中查看 pdf 文件
- python - os.getcwd() 返回上一级目录