如何从嵌套数组中拼接出一个数组 - 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的主要内容,如果未能解决你的问题,请参考以下文章
输入一个正整数数组,把数组里所有数字拼接起来排成一个数。打印能拼接出所有数字中最小的一个
如何在 React 的 API 中渲染嵌套在对象中的数组中的数据?