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

use*_*421 1 javascript arrays jquery underscore.js

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

Object:
  - alpha: Array[3]
     0: "vatG4d6mcjKbpfuAm"
     1: "xkQrKEsfwuYPkDcdz"
     2: "GDg9chZnDGrbLXWGS"
  - bravo: Array[1]
     0: "53LEcQ5MoYXFyvktf"
  - …
Run Code Online (Sandbox Code Playgroud)

结果应该是:

["vatG4d6mcjKbpfuAm", "xkQrKEsfwuYPkDcdz", "GDg9chZnDGrbLXWGS", "53LEcQ5MoYXFyvktf"]
Run Code Online (Sandbox Code Playgroud)

我用一个简单的for循环迭代元素来做到这一点,但我关注性能.这可以通过简单的jQuery或underscore.js函数实现吗?

任何帮助将不胜感激.

And*_*ndy 10

没有必要为此使用库.

对于两个阵列使用concat:

var arr = obj.alpha.concat(obj.bravo);
Run Code Online (Sandbox Code Playgroud)

对于两个以上的数组,使用循环:

要么concat再次

var arr = [];
for (var k in obj) {
  arr = arr.concat(obj[k]);
}
Run Code Online (Sandbox Code Playgroud)

或使用该push.apply方法

var arr = [];
for (var k in obj) {
  arr.push.apply(arr, obj[k]);
}
Run Code Online (Sandbox Code Playgroud)

DEMO

使用此信息创建一个函数,这样您就不需要重复代码:

function mergeObjectArrays(obj) {
  var arr = [];
  for (var k in obj) {
    arr.push.apply(arr, obj[k]);
  }
  return arr;
}

var arr = mergeObjectArrays(obj);
Run Code Online (Sandbox Code Playgroud)