【发布时间】:2020-07-15 11:37:27
【问题描述】:
我有以下示例数组:
mainArray = [
{id: 15475, name: 'Ali', gender: 'Male', addresses: [
{address1: 'Lebanon'},
{address2: 'USA'}]
},
{id: 15475, name: 'Emily', gender: 'Female', addresses: [
{address1: 'UK'},
{address2: 'France'}]
},
];
我需要将其转换为:
mainArray = [
{id: 15475, name: 'Ali', gender: 'Male', addresses: 'Lebanon, USA'},
{id: 15475, name: 'Emily', gender: 'Female', addresses: 'UK, France }
];
在这种情况下,我将mainArray 的一个元素内的所有嵌套数组添加到一个字符串值中。
到目前为止,我所做的是,我提取了mainArray 的键名:
extractedIndexes = ['id', 'name', 'gender', 'addresses'];
并创建了一个循环来检查mainArray 中每个元素的类型,如果它是一个对象,我会将嵌套数组的值连接到一个字符串中:
for (const idx of this.extractedIndexes) {
console.log(idx)
this.mainArray.forEach((elem) => {
let newItem = '';
if (typeof (elem[idx]) == 'object') {
elem[idx] = Object.keys(elem[idx]).forEach((key) => {
console.log(elem[idx][key])
// Add it to the field
})
console.log(elem[idx])
}
})
}
console.log(this.mainArray)
console.log(elem[idx][key]) 这一行总是返回以下内容:
{address1: "Lebanon"}
{address2: "USA"}
{address1: "UK"}
{address2: "France"}
注意这里address1和address2是简单的例子,因为我的真实数据包含多个嵌套数组,每个都有不同的新键名。
我尝试执行以下操作:
if (typeof (elem[idx]) == 'object') {
elem[idx] = elem[idx].toString().split(',')
// Add it to the field
console.log(elem[idx])
}
但它返回了[Object, Object]。
那么如何将嵌套数组转换为单个串联字符串值?
这是stackblitz。
【问题讨论】:
标签: javascript arrays angular multidimensional-array