Javascript 阵列中的子阵列
我对JavaScript非常熟悉(现在只研究了不到一周),并且在计算从某个数组生成的子数组中的值之和时遇到了问题。我可以使用此功能完成此操作:Javascript 阵列中的子阵列,javascript,arrays,algorithm,collections,combinations,Javascript,Arrays,Algorithm,Collections,Combinations,我对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)); } }
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;
}
函数getSubs(arr){
var newarr=[];
对于(变量i=0;i现在,如果为数组调用此函数,则结果是
[[]、[]、[]、[]、[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],[1],[2,3],[2],[3]]
需要注意的是:考虑到
Array.slice(initialOffset,finalOffset)
,当finalOffset>initialOffset时,返回一个非空数组是有意义的,因此[1,2,3]
是您的示例输入。但是你想要的输出是什么呢?现在还不清楚你想在这里做什么。你没有在嵌套数组中循环,切片代码也没有任何意义……空集仍然需要被包括在内,因为它被认为是一个子集@chiliNUT,OP告诉它只是为了去掉空子数组。@chiliNUT只是提一下,如果OP真的想要一个幂集,该代码也无法检索[1,3]
。非常感谢!)现在开始试验如何得到总和…:)@现在你提到了falsarella,是的,它并没有真正理解这一点。我以为我有所有可能的子阵列。你知道我该如何改进代码来达到这个目的吗?
[[1,2,3],[1,2],[1],[2,3],[2],[3]]