数组中的子数组
Subarrays in an array
我对 JavaScript 非常了解(现在只研究了不到一周)并且在计算我从某个数组生成的子数组中的值之和时遇到问题。我能够使用此功能做到这一点:
function getSubs(arr) {
var newarr = [];
for (var i = 0; i < arr.length; i++){
for (var j = arr.length; j > 0; j--){
newarr.push(arr.slice(i, j));
}
}
return newarr;
}
现在,如果为数组 [1,2,3]
调用此函数,结果为 [[], [], [], [1], [2], [3], [2, 3], [1, 2], [1, 2, 3]]
。我不明白为什么会有三个空数组,但这接近我想要实现的目标。此外,我想获得每个子数组中值的总和。我知道上面的代码很粗糙。希望有人可以帮助我改进它。提前致谢!
嵌套的条件不正确。
将它从 j > 0
更改为 j > i
,它将正常工作:
function getSubs(arr){
var newarr = [];
for (var i=0;i<arr.length;i++){
for (var j=arr.length;j>i;j--){
newarr.push(arr.slice(i,j));
}
}
return newarr;
}
输入:
[1,2,3]
输出:
[[1,2,3],[1,2],[1],[2,3],[2],[3]]
请注意:考虑到 Array.slice(initialOffset, finalOffset)
,当 finalOffset > initialOffset
.
时 return 一个非空数组是有意义的
我对 JavaScript 非常了解(现在只研究了不到一周)并且在计算我从某个数组生成的子数组中的值之和时遇到问题。我能够使用此功能做到这一点:
function getSubs(arr) {
var newarr = [];
for (var i = 0; i < arr.length; i++){
for (var j = arr.length; j > 0; j--){
newarr.push(arr.slice(i, j));
}
}
return newarr;
}
现在,如果为数组 [1,2,3]
调用此函数,结果为 [[], [], [], [1], [2], [3], [2, 3], [1, 2], [1, 2, 3]]
。我不明白为什么会有三个空数组,但这接近我想要实现的目标。此外,我想获得每个子数组中值的总和。我知道上面的代码很粗糙。希望有人可以帮助我改进它。提前致谢!
嵌套的条件不正确。
将它从 j > 0
更改为 j > i
,它将正常工作:
function getSubs(arr){
var newarr = [];
for (var i=0;i<arr.length;i++){
for (var j=arr.length;j>i;j--){
newarr.push(arr.slice(i,j));
}
}
return newarr;
}
输入:
[1,2,3]
输出:
[[1,2,3],[1,2],[1],[2,3],[2],[3]]
请注意:考虑到 Array.slice(initialOffset, finalOffset)
,当 finalOffset > initialOffset
.