如何从嵌套数组中拼接出一个数组 - javascript

Posted

技术标签:

【中文标题】如何从嵌套数组中拼接出一个数组 - javascript【英文标题】:How to splice an array out of a nested array - javascript 【发布时间】:2015-11-26 03:43:02 【问题描述】:

我正在尝试将嵌套数组从其父数组中拼接出来。考虑以下数组。 items.splice(0,1) 应该给我第一个嵌套数组([1,2]),但它似乎给了我第一个嵌套数组,仍然嵌套在数组中:

var items = [[1,2],[3,4],[5,6]];

var item = items.splice(0,1); // should slice first array out of items array

console.log(item); //should log [1,2], instead logs [[1,2]]

但是,它似乎在另一个数组中返回了所需的数组(第一项)。除非我做item[0],否则我无法获得完整的数组。我到底错过了什么!?

【问题讨论】:

不需要拼接。只需改用items[0] 嗯,我想改变原始数组,然后根据拼接数组的元素选择一个值。 【参考方案1】:

MDN 说 Array.prototype.splice:

返回

一个包含已删除元素的数组。如果仅删除一个元素,则返回一个包含一个元素的数组。如果没有元素被移除,则返回一个空数组。

所以,它不会只返回被删除的元素,它会被包装在一个数组中。

【讨论】:

有点疯狂我从来不知道 splice 会自动将它放在一个新创建的数组中,我只是一直认为它是这样工作的,因为它是从一个已经存在的数组中获取的。考虑它是有道理的,因为这就是 Array.prototype.slice.call(arguments) 的工作原理,因为它只是一个类似数组的对象:)【参考方案2】:

splice() 更改数组的内容,并返回一个包含已删除元素的数组。

在您的情况下,您的原始数组中的元素也恰好是数组。这可能会让你感到困惑。

【讨论】:

【参考方案3】:

.splice()item 返回正确的数组;尝试选择返回数组的索引0 以返回[1,2];要“扁平化”item,请尝试使用 Array.prototype.concat();见How to flatten array in jQuery?

var items = [[1,2],[3,4],[5,6]];

var item = items.splice(0,1); // should slice first array out of items array
// https://***.com/a/7875193/
var arr = [].concat.apply([], item);

console.log(item[0], arr);

【讨论】:

【参考方案4】:

要替换二维数组,您应该使用 array[row][col] 例如

for(var row = 0; row < numbers.length; row++) 
    for(var col = 0; col < numbers[row].length; col++) 
        if (numbers[row][col] % 2 === 0) 
            numbers[row][col] = "even";
         else 
            numbers[row][col] = "odd";
          
    


console.log(numbers);

【讨论】:

【参考方案5】:

你应该引用items中的第一个数组,然后拼接它。试试下面的 sn-p。

var items = [[1,2],[3,4],[5,6]];

var item = items[0].splice(0,2);

console.log(item);

【讨论】:

但这会使items 处于一种时髦的状态:[ [], [3, 4], [5, 6] ]

以上是关于如何从嵌套数组中拼接出一个数组 - javascript的主要内容,如果未能解决你的问题,请参考以下文章

输入一个正整数数组,把数组里所有数字拼接起来排成一个数。打印能拼接出所有数字中最小的一个

如何从返回的数据组件 vuejs 中拼接一个子数组?

如何在 React 的 API 中渲染嵌套在对象中的数组中的数据?

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字的最小的一个

如何从具有嵌套对象数组的对象数组中获取所有特定值?

以特定方式在Excel中解析JSON嵌套数组