如何将两个 JS 数组连接到一个新的对象数组作为键:值

How to concat two JS arrays to a new array of objetcs as key: value?

本文关键字:数组 对象 一个 连接 两个 JS      更新时间:2023-09-26

我们有 2 个数组,如下所示:

foo = ['one', 'two', 'three']
bar = ['morning', 'day', 'night']

我怎样才能得到一个新的对象数组,它应该看起来像:

obj = [{'one': 'morning'}, {'two': 'day'}, {'three': 'night'}]

提前感谢!

没有标准函数这样做。

我会这样做:

var list = {};
for(var i = 0; i < foo.length(); ++i) {
    list[foo[i]] = bar[i];
}

也许你应该做一些安全的事情,比如if(bar[i])等等。

更安全的是:

var list = {};
var len = Math.min(foo.length(), bar.length());
for(var i = 0; i < len; ++i) {
    if(!list[foo[i]]) {
        list[foo[i]] = bar[i];
    }
}

只需遍历数组并将键/值对加载到对象中即可。

var foo = ['one', 'two', 'three'],
    bar = ['morning', 'day', 'night'],
    obj = {},
    i;
for (i = 0; i < foo.length; i++) {
    obj[foo[i]] = bar[i];
}

现在你应该有

obj = [{'one': 'morning'}, {'two': 'day'}, {'three': 'night'}]

注意:此解决方案假定两个数组的长度相同。

所以也许这种方法适合你

Array.prototype.join_array = function(keys, val){
    if (arguments.length < 2 ) return {};

    for (var i = 0; i < keys.length ; i++ ){
        var o = {};
        o[ keys[i] ] = val[i] || val[val.length -1];
        this.push( o );
    }
};
var a = [];
a.join_array( ['key1', 'key2'], ['val1', 'val2'] );
console.log( JSON.stringify(a) );