我试图将嵌套数组拼接出其父数组。考虑以下数组。 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]
,否则我无法获得完整数组。我错过了什么??
答案 0 :(得分:4)
MDN说Array.prototype.splice
:
返回
包含已删除元素的数组。如果仅删除一个元素,则返回一个元素的数组。如果没有删除任何元素,则返回一个空数组。
因此,它不会只返回已删除的元素,它将被包装在一个数组中。
答案 1 :(得分:0)
splice()
更改数组的内容,并返回包含已删除元素的数组。
在您的情况下,您的原始数组包含的元素也恰好是数组。这可能让你感到困惑。
答案 2 :(得分:0)
.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://stackoverflow.com/a/7875193/
var arr = [].concat.apply([], item);
console.log(item[0], arr);
答案 3 :(得分:0)
您应该在项目中引用第一个数组,然后对其进行拼接。尝试使用下面的代码段。
var items = [[1,2],[3,4],[5,6]];
var item = items[0].splice(0,2);
console.log(item);
答案 4 :(得分:-1)
要替换二维数组,您应该使用数组[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);