[英]Merge Array to Object Array JavaScript
我這里有一個數組:
var array = [
[
['firstName', 'Nork'], ['lastName', 'James'], ['age', 22], ['position', 'writer']
],
[
['firstName', 'James'], ['lastName', 'Rodel'], ['age', 25], ['position', 'programmer']
]
];
我創建了一個函數,將我的函數轉換為obj數組,如下所示:
[
{firstName: 'Nork', lastName: 'James', age: 22, position: 'writer'},
{firstName: 'James', lastName: 'Rodel', age: 25, role: 'programmer'}
]
所以我創建了一個功能來做到這一點。 但是我不知道從哪里開始讓我合並它們。
function changeData(array) {
var obj = { };
}
changeData(array);
有幫助嗎?
map()
方法創建一個新數組,其結果是在此數組中的每個元素上調用提供的函數。
reduce()
方法對累加器和數組中的每個元素(從左到右)應用一個函數,將其減少為單個值。
var array = [ [ ['firstName', 'Nork'], ['lastName', 'James'], ['age', 22], ['position', 'writer'] ], [ ['firstName', 'James'], ['lastName', 'Rodel'], ['age', 25], ['position', 'programmer'] ] ]; function mergeObjectArray(array) { return array.map(function(el) { return el.reduce(function(a, b) { a[b[0]] = b[1]; return a; }, {}) }); } console.log(mergeObjectArray(array));
您可以映射到數組並分配動態屬性,例如obj[prop] = value
var array = [ [ ['firstName', 'Nork'], ['lastName', 'James'], ['age', 22], ['position', 'writer'] ], [ ['firstName', 'James'], ['lastName', 'Rodel'], ['age', 25], ['position', 'programmer'] ] ]; var convertedArray = array.map(function(line){ var obj = {}; line.forEach(function(prop){ obj[prop[0]]=prop[1]; }); return obj; }); console.log(convertedArray);
您可以使用Array.prototype.map()在其回調中循環遍歷第一個數組以及Array.prototype.forEach()以循環遍歷子數組並將它們合並到一個唯一對象中:
var merged = array.map(function(arr) {
var obj = {};
arr.forEach(function(item) {
obj[item[0]] = item[1];
});
return obj;
});
演示:
var array = [ [ ['firstName', 'Nork'], ['lastName', 'James'], ['age', 22], ['position', 'writer'] ], [ ['firstName', 'James'], ['lastName', 'Rodel'], ['age', 25], ['position', 'programmer'] ] ]; var merged = array.map(function(arr) { var obj = {}; arr.forEach(function(item) { obj[item[0]] = item[1]; }); return obj; }); console.log(merged);
看到這個:
var array = [
[
['firstName', 'Nork'], ['lastName', 'James'], ['age', 22], ['position', 'writer']
],
[
['firstName', 'James'], ['lastName', 'Rodel'], ['age', 25], ['position', 'programmer']
]
];
function changeData(array)
{
var i,j;
var ret = [];
var tmp = {};
// rotate through every line and create a temporary object which we push to the return array
for (i=0;i<array.length;i++)
{
tmp = {};
for (j=0;j<array[i].length;j++) tmp[ array[i][j][0] ] = array[i][j][1];
ret.push(tmp);
}
return ret;
}
console.log(changeData(array));
您尚未指定要合並用戶的方式。 這將獲取您的用戶對象數組,並將所有結果減少到一個對象中,並提供所有值的數組。
var array = [ {firstName: 'Nork', lastName: 'James', age: 22, position: 'writer'}, {firstName: 'James', lastName: 'Rodel', age: 25, role: 'programmer'} ] function changeData(array) { return array.reduce((users, user) => { Object.keys(user).forEach(key => { users[key+'s'] = Array.isArray(users[key+'s']) ? users[key+'s'].concat(user[key]) : [user[key]] }) return users }, {}) } console.log( changeData(array) )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.