如何将两个 JS 数组连接到一个新的对象数组作为键:值
How to concat two JS arrays to a new array of objetcs as key: value?
我们有 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) );
相关文章:
- 将数组对象传递到struts2中的操作类
- 如何使用jquery返回php-json数组对象
- 从其名称获取javascript数组对象
- 值未与数组对象绑定
- 如何按数组/对象值的倍数过滤对象数组
- 在表中显示数组对象
- 在数组对象中分组
- 将第二个或多个数组推送到数组对象 AngularJS 中
- 重新排列 JavaScript 数组/对象
- 键上的javascript数组对象过滤器
- handontable:在不更改数据数组/对象的情况下隐藏某些列
- 用于跟踪购物车可用性的Javascript数组/对象/哈希表
- 重建有角度的java脚本数组对象
- 对JSON数组对象进行排序
- 连接与数组对象相关的文本:方式和位置
- 哪些浏览器和版本支持将常见的类数组对象直接传递到fn.apply()
- 如何使用Handlebars循环数组对象和模板
- 是否可以引用JS数组/对象中的另一个元素
- Javascript中的名称索引-数组/对象
- 数组长度不等于数组对象