【发布时间】:2019-07-01 14:38:17
【问题描述】:
现在我正在尝试创建一个数字大于0的对象数组,当数字为0时,数组结束,当数字大于0时,应该创建一个新数组(因此该函数应该返回一个数组数组,当中间有 0 时分解。
输入和期望的输出:
input = [1,2,3,4,0,0,0,9,9,0,0]
output = [[1,2,3,4][9,9]]
我的功能(到目前为止):
function group(Array) {
let allArray = []
let runGroup = new Array()
Array.forEach(function(runtimeI,index) {
if (runtimeI > 0)
{
runGroup[i] = new Array()
runGroup[i].push(runtimeI)
}
}
)
allArray.push(runGroup[i])
}
array = [10,0,0,1,1,2,0,0,15,0,0,0,5,5,5,]
console.log(group(array))
我创建的函数抛出一个错误说array is not a constructor
工作示例函数(创建我需要的那种结构)
var squares = new Array();
for(var i = 0; i <= 8; i++)
{
squares[i] = new Array();
for(var j = (i * 20) + 1; j <= 20 * i + 20; j++)
if (squares[i] == null)
squares[i] = j;
else
squares[i].push(j);
}
console.log(squares)
所以我想我的问题是,对于 for 循环,是否有一些 forEach 不能做的事情?我还有其他方法可以做到这一点吗?
【问题讨论】:
-
您发布的
.forEach()代码有几个错误;你检查过控制台吗? -
Array.forEach?你只是在调用 forEach ......没什么特别的。这应该迭代什么? -
group(Array)那更糟!new Array()现在不创建新数组,而是在输入上调用new。 -
首先不要隐藏
Array构造函数。使用数组字面量初始化器也有帮助 -[]而不是new Array但遮蔽Array仍然令人困惑。 -
function group(Array) {— 不要用同名的局部变量来掩盖全局函数。不要将以大写字母开头的变量用于非构造函数。
标签: javascript arrays loops