使用jQuery或underscore.js合并对象中多个数组的值

Merge values of multiple arrays in object with jQuery or underscore.js

本文关键字:数组 对象 jQuery underscore js 合并 使用      更新时间:2023-09-26

我想将一个对象中多个数组的值合并到一个数组中。例如:

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"]