我们有2个数组,如:
foo = ['one', 'two', 'three']
bar = ['morning', 'day', 'night']
我怎么能得到一个新的对象数组,它应该是:
obj = [{'one': 'morning'}, {'two': 'day'}, {'three': 'night'}]
提前致谢!
答案 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) );