如何将2个数组与n个元素合并为1个包含n个对象的数组?

时间:2017-12-29 11:39:41

标签: javascript arrays ecmascript-6

我想做这样的事情:

const foo = ['aba', 'bab'];
const bar = [1, 2];

然后创建这个数组:

result = [
{
  text: foo[0]
  number: bar[0]
},
{
  text: foo[1]
  number: bar[1]
}
]  

Foo和bar的长度相同。

5 个答案:

答案 0 :(得分:3)

如果您的数组具有相同的长度,则可以使用Array#map迭代每个,获取索引然后创建新的对象数组,将文本设置为项目,将数字设置为bar[index]



const foo = ['aba', 'bab'];
const bar = [1, 2];

const mapped = foo.map((item, index) => ({text: item, number: bar[index]}));

console.log(mapped);




答案 1 :(得分:1)

我只是映射其中一个数组,并使用映射函数的第二个参数index来获取另一个参数的值:

var result = foo.map((value, index) => ({
     text: value, number: bar[index],
}));

答案 2 :(得分:0)

简单的解决方案

let result = [] ;
const foo = ['aba','bab']
const bar = [1,2]
for(let i = 0 ; i<foo.length;i++){
  result[i]={}
  result[i].text = foo[i] ; 
  result[i].number = bar[i];
}
console.log(result) ;

答案 3 :(得分:0)

假设长度始终相同,您可以这样做:

var foo = ['aba','bab']
var bar = [1,2]

function makeObjects(f, b) {
    return foo.map((o, i) => ({text: f[i], number: bar[i]}))
}

console.log(makeObjects(foo, bar))
// [{text: 'aba', number: 1}, {text: 'bab', number: 2}]

答案 4 :(得分:0)

var foo = ['aba','bab'];
var bar = [1,2];
var result = [];
function a(){
    for(var i=0;i<foo.length;i++){
        result[i] = { text: foo[i], number:bar[i]};
    }
    console.log(result);
}

这就是你要找的东西吗?