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

时间:2014-11-21 14:03:49

标签: javascript arrays object iteration

我们有2个数组,如:

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

我怎么能得到一个新的对象数组,它应该是:

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

提前致谢!

3 个答案:

答案 0 :(得分:1)

这样做没有标准功能。

我会这样做:

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];
    }
}

答案 1 :(得分:1)

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

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'}]

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

答案 2 :(得分:0)

所以也许这种方法适合你

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) );