合并数组到对象数组JavaScript

合并数组到对象数组JavaScript,javascript,arrays,object,Javascript,Arrays,Object,我这里有一个数组: var array = [ [ ['firstName', 'Nork'], ['lastName', 'James'], ['age', 22], ['position', 'writer'] ], [ ['firstName', 'James'], ['lastName', 'Rodel'], ['age', 25], ['position', 'programmer'] ] ]; 我创建了一个函数,它将我

我这里有一个数组:

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);
有什么帮助吗?

请看以下内容:

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数组=[
[
['firstName','Nork',['lastName','James',['age',22','position','writer']
],
[
['firstName','James',['lastName','Rodel',['age',25','position','programmer']
]
];
函数changeData(数组)
{
varⅠ,j;
var-ret=[];
var tmp={};
//旋转每一行,创建一个临时对象,并将其推送到返回数组
对于(i=0;i使用超过


map()。

reduce()
方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值

var数组=[
[
['firstName','Nork'],
['lastName','James'],
[‘年龄’,22],
['position','writer']
],
[
['firstName','James'],
['lastName','Rodel'],
[age',25],
[“职位”,“程序员”]
]
];
函数mergeObjectArray(数组){
返回数组.map(函数(el){
返回el.REDUCT(功能(a,b){
a[b[0]]=b[1];
返回a;
}, {})
});
}

log(mergeObjectArray(array));
您可以映射到您的数组中,并像这样分配动态属性
obj[prop]=value

var数组=[
[
['firstName','Nork',['lastName','James',['age',22','position','writer']
],
[
['firstName','James',['lastName','Rodel',['age',25','position','programmer']
]
];
var convertedArray=array.map(函数(行){
var obj={};
行forEach(功能(道具){
obj[prop[0]]=prop[1];
});
返回obj;
});

console.log(convertedArray);
您只需使用在第一个数组上循环以及在其回调中循环子数组并将它们合并到一个唯一的对象中即可:

var merged = array.map(function(arr) {
  var obj = {};
  arr.forEach(function(item) {
    obj[item[0]] = item[1];
  });
  return obj;
});
演示:

var数组=[
[
['firstName','Nork'],
['lastName','James'],
[‘年龄’,22],
['position','writer']
],
[
['firstName','James'],
['lastName','Rodel'],
[age',25],
[“职位”,“程序员”]
]
];
var merged=array.map(函数(arr){
var obj={};
arr.forEach(功能(项目){
obj[项目[0]]=项目[1];
});
返回obj;
});

console.log(merged);
您尚未指定合并用户的方式。这将使用您的用户对象数组,并将所有结果缩减为一个包含所有值的数组的单个对象

var数组=[
{名字:“诺克”,姓氏:“詹姆斯”,年龄:22岁,职位:“作家”},
{姓:“詹姆斯”,姓:“罗德尔”,年龄:25岁,角色:“程序员”}
]
函数changeData(数组){
返回数组。减少((用户,用户)=>{
Object.keys(user.forEach)(key=>{
users[key+'s']=Array.isArray(users[key+'s'])?users[key+'s'].concat(user[key]):[user[key]]
})
返回用户
}, {})
}
console.log(
更改数据(数组)

)
我有点困惑。你想如何合并它们?@GaaraItachiUchiha-我在帖子中提供了参考链接。我希望这会有所帮助:)不要对内部循环使用
map
。@Cerbrus-forEach更好?是的。
map
用于修改数组。
forEach
当您不想修改源数组时,只需在其上循环。好的,得到了!这不是OP想要的。不幸的是,OP没有指定他们想要的,但是,他们确实说他们需要ave已经创建了代码来执行所有其他答案所做的操作,但表示他们希望合并结果。唯一的示例包含对象而不是数组。这回答了这个问题,以及为什么我在回答之前对此进行了解释。无论如何,感谢您的否决票。关于所需的ou,问题非常清楚tput格式。此答案返回完全不同的结果。“我创建了一个函数,将我的函数转换为如下obj数组”,“因此我创建了一个函数来实现此目的。但是我不确定从何处开始合并它们。”在我看来不是很清楚…如果你认为不清楚,为什么你回答说“不清楚”,而不是近距离投票?