想要将列中的数组合并到另一个数组中

时间:2017-05-02 07:44:20

标签: javascript

这里的Javascript新手。我有三个阵列:

var code = [123, 456, 789];
var year = [2013, 2014, 2015];
var period = [3, 4, 5];

我希望将它们合并为

var all = [
  {"code": 123, "year": 2013, "period": 3},
  {"code": 456, "year": 2014, "period": 4},
  {"code": 789, "year": 2015, "period": 5}
];

如何在普通的Javascript中轻松完成此操作?

3 个答案:

答案 0 :(得分:3)

您应该使用map方法,该方法具有callback功能。 map方法通过对每个项目应用provided函数来创建新数组。



var code = [123, 456, 789];
var year = [2013, 2014, 2015];
var period = [3, 4, 5];

console.log(code.map(function(item,i){
    return {"code":item,"year":year[i],"period":period[i]};
}))




答案 1 :(得分:3)

我更喜欢Alexandru-Ionut Mihai's solution,但您可能会更加健壮:

const len = Math.min(code.length, year.length, period.length);
let results = [];
for(let i = 0; i < len; i++) {
    results.push({
        code: code[i],
        year: year[i],
        period: period[i]
    });
}

答案 2 :(得分:0)

您可以使用动态方法,使用数组中的给定键和数组来迭代数据。

var code = [123, 456, 789],
    year = [2013, 2014, 2015],
    period = [3, 4, 5],
    keys = ['code', 'year', 'period'],
    result = [code, year, period].reduce(function (r, a, i) {
        a.forEach(function (v, j) {
            (r[j] = r[j] || {})[keys[i]] = v;
        });
        return r;
    }, []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }