我可以告诉我从第3帧到第4帧经历了我的while循环。
我没有正确检查我的while循环中的条件吗?
function steamrollArray(arr) {
var R2 = [];
while (arr[0].isArray) {
console.log(arr[0]);
R2.push(arr[0]);
return R2;
}
return R2;
}
steamrollArray([[["a"]], [["b"]]]); // should return ["a", "b"].
steamrollArray([1, [2], [3, [[4]]]]); // should return [1, 2, 3, 4].
steamrollArray([1, [], [3, [[4]]]]); // should return [1, 3, 4].
steamrollArray([1, {}, [3, [[4]]]]); // should return [1, {}, 3, 4].
答案 0 :(得分:2)
function steamrollArray(arr) {
var R2 = [];
while (Array.isArray(arr[0])) {
console.log(arr[0]);
R2.push(arr[0]);
return R2;
}
return R2;
}
是一种数组方法 - Array.isArray
unsigned char
答案 1 :(得分:2)
你使用isArray是错误的。 这是一种方法,它接受输入并检查它是否是一个数组。
function steamrollArray(arr) {
var R2 = [];
while (Array.isArray(arr[0])) {
console.log(arr[0]);
R2.push(arr[0]);
return R2;
}
return R2;
}
答案 2 :(得分:0)
您的代码似乎有一些逻辑错误(除了不使用Array.isArray
时的语法错误)。要获得所需的结果,您可以使用如下的递归:
function steamrollArray(arr) {
var R2 = [];
for (var element of arr) {
var nextElements = [];
while (Array.isArray(element)) {
nextElements = element.slice(1);
element = element[0];
}
if (!element) continue;
R2.push(element);
var rolledNextElements = steamrollArray(nextElements);
R2 = R2.concat(rolledNextElements);
}
return R2;
}
console.log(steamrollArray([[["a"]], [["b"]]]));
console.log(steamrollArray([1, [2], [3, [[4]]]]));
console.log(steamrollArray([1, [], [3, [[4]]]]));
console.log(steamrollArray([1, {}, [3, [[4]]]]));