使用jQuery或underscore.js合并对象中多个数组的值
Merge values of multiple arrays in object with jQuery or underscore.js
我想将一个对象中多个数组的值合并到一个数组中。例如:
Object:
- alpha: Array[3]
0: "vatG4d6mcjKbpfuAm"
1: "xkQrKEsfwuYPkDcdz"
2: "GDg9chZnDGrbLXWGS"
- bravo: Array[1]
0: "53LEcQ5MoYXFyvktf"
- …
结果应该是:
["vatG4d6mcjKbpfuAm", "xkQrKEsfwuYPkDcdz", "GDg9chZnDGrbLXWGS", "53LEcQ5MoYXFyvktf"]
我用一个简单的for循环来迭代元素,但我担心性能。用一个简单的jQuery或underscore.js函数可以做到这一点吗?
如有任何帮助,我们将不胜感激。
没有必要为此使用库。
对于两个阵列,使用concat
:
var arr = obj.alpha.concat(obj.bravo);
对于两个以上的阵列,使用一个循环:
再次使用concat
var arr = [];
for (var k in obj) {
arr = arr.concat(obj[k]);
}
或使用push.apply
方法
var arr = [];
for (var k in obj) {
arr.push.apply(arr, obj[k]);
}
演示
使用这些信息制作一个函数,这样你就不需要重复代码:
function mergeObjectArrays(obj) {
var arr = [];
for (var k in obj) {
arr.push.apply(arr, obj[k]);
}
return arr;
}
var arr = mergeObjectArrays(obj);
使用jquery可以使用合并
var newArray = $.merge(array1, array2);
带下划线可以使用联合
var newArray = _.union(array1, array2);
您可以使用纯javascript来连接数组,如下所示:
var obj =
{
alpha: ["vatG4d6mcjKbpfuAm", "xkQrKEsfwuYPkDcdz", "GDg9chZnDGrbLXWGS"],
bravo: ["53LEcQ5MoYXFyvktf"]
};
var obj.charlie = obj.alpha.concat(obj.bravo);
// obj.charlie = ["vatG4d6mcjKbpfuAm", "xkQrKEsfwuYPkDcdz", "GDg9chZnDGrbLXWGS", "53LEcQ5MoYXFyvktf"]
相关文章:
- 将数组对象传递到struts2中的操作类
- 如何使用jquery返回php-json数组对象
- 从其名称获取javascript数组对象
- 值未与数组对象绑定
- 如何按数组/对象值的倍数过滤对象数组
- 在表中显示数组对象
- 在数组对象中分组
- 将第二个或多个数组推送到数组对象 AngularJS 中
- 重新排列 JavaScript 数组/对象
- 键上的javascript数组对象过滤器
- handontable:在不更改数据数组/对象的情况下隐藏某些列
- 用于跟踪购物车可用性的Javascript数组/对象/哈希表
- 重建有角度的java脚本数组对象
- 对JSON数组对象进行排序
- 连接与数组对象相关的文本:方式和位置
- 哪些浏览器和版本支持将常见的类数组对象直接传递到fn.apply()
- 如何使用Handlebars循环数组对象和模板
- 是否可以引用JS数组/对象中的另一个元素
- Javascript中的名称索引-数组/对象
- 数组长度不等于数组对象