如何合并数组和对象

时间:2017-05-11 12:51:58

标签: javascript arrays

我需要将数组和对象合并在一起,但我找不到正确的方法来正确地完成它。

var array = [[1, 5, 6, 9]]; // from 
var object = {toto: 4, titi: "tutu"};

如果我有这两个变量并希望将它们合并为一个,我该如何处理?知道我希望输出是一个数组。

我知道它可以在循环中完成

var merge = [];
for(var val of array)
{
  merge = [].concat(val);
}
merge.push(object);

但我正在寻找一种更简洁的方法。

我想获得这样的东西:

  var result = [1, 5, 6, 9, {toto:4, titi:"tutu"}]

修改

正如评论中指出的那样,我对我的需要还不够具体。

所以我在这里展示了一个使用小而简单的数组和对象的循环解决方案。但我需要处理更复杂的数组(和多维数组)和对象。我的解决方案仍然有效,但我也不得不担心性能,所以我正在寻找更有效的解决方案。

我的目标是使解决方案尽可能高效,以便能够在任何情况下使用它,无论客户端性能如何,对于任何类型和大小的数组和对象都是如此。

我目前在一个已经非常繁重的代码上需要这个(使用实时移动对象的地图),所以我试图在任何地方提高性能。

我还想知道是否可以这样做而不必连接我原始数组中可能拥有的每个可能的数组。 (我不想有重复的代码)

但最终如果concat和loop是最有效的,我会坚持下去。

编辑2

例如,我想使用这种数组和对象获得与我的示例相同类型的结果:

var depthArray = 
               [
                 [[1, 2, 5, 8], ["toto", "titi", 8]],
                 [["data", "blob", 6], [8, 5, 2], [7, "tata"]],
               ];

var depthObject = 
                {
                  data:
                       {
                         x: 1,
                         y: {z: 5},
                         t: "time",
                       }
                }

结果它看起来像那样:

var depthResult = [1, 2, 5, 8, "toto", "titi", 8, "data", "blob", 6, 8, 5, 2, 7, "tata", {data:{x:1, y:{z:5}, t: "time"}}]

1 个答案:

答案 0 :(得分:0)

你可以将第一个数组从数组中取出并将对象连接到它。



var array = [[1, 5, 6, 9]], 
    object = { toto: 4, titi: "tutu" },
    result = array[0].concat(object);
    
console.log(result);