У меня есть следующий образец массива:
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'];
И сделал al oop, чтобы проверить тип каждого элемента внутри 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 .