javascript - 数组中的子数组

标签 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));
    }
  }
  return newarr;
}

现在如果为数组 [1,2,3] 调用此函数,结果是 [[], [], [], [1], [ 2], [3], [2, 3], [1, 2], [1, 2, 3]]。我不明白为什么会有三个空数组,但这接近我想要实现的目标。此外,我想获得每个子数组中值的总和。我知道上面的代码很粗糙。希望有人可以帮助我改进它。提前致谢!

最佳答案

嵌套 for 的条件不正确。 将它从 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 时只返回一个非空数组是有意义的。

关于javascript - 数组中的子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28681214/

相关文章:

javascript - 如何使用字符串中的变量更改 CSS 属性

python - Numpy 结构化数组无法进行基本的 numpy 操作

c++ - 使用另一个数组的值初始化本地静态常量数组

c - OpenGL 绘制缓冲区问题

java - 从 10000 个 ascii 字符串返回一个字符串子集

java - 如何找到字符串的分解?

php - 谷歌地图标记 : Need option for 'Get Directions'

javascript - 添加react-hot-loader到弹出的create-react-app

Javascript、Jquery 和 css3 振荡字母动画

c - 与编程语言无关,有哪些常见的性能问题?