gpt4 book ai didi

javascript - 尝试提取连续子数组时返回的圆形对象数组

转载 作者:行者123 更新时间:2023-12-01 15:45:53 25 4
gpt4 key购买 nike

我想从给定的数组中找到所有连续的子数组。

例如,给定数组 [1,2,3]我想提取所有连续的子数组:

[[1],[2],[3],[1,2],[1,2,3],[2,3]]

以任何顺序。

我在这里尝试了一个解决方案: https://codepen.io/loganlee/pen/XWbPKeR?editors=0011

let a = [1, 2, 3];

let store = [];

a.forEach(
(n, i) => {
store.push([n]);
let nested = [n];
for (let index = i + 1; index < a.length; index++) {
nested.push(a[index]);
store.push(nested);
}
}
);

console.log(store);


我在这里得到商店的日志:
[[1],[1,2,3],[circular object Array],[2],[2,3],[3]]

当我期待
[[1],[1,2],[1,2,3],[2],[2,3],[3]]

我不确定为什么存在“圆形对象数组”,以及为什么缺少 [1,2]。

非常感谢!

最佳答案

你可以做这样的事情。

  • 首先获取数组的长度。根据数组长度,我们决定结果数组的最终长度应该是多少
  • 直到索引小于长度,我们才捕获单个元素
  • 然后我们从 0 to (i - (length-2)) 切片元素这是为了获取像 [1,2], [1,2,3] 这样的元素在增加到数组长度的范围内
  • 最后从 (i - (length-2))-length 切片元素.这是为了获取像 [2,3] 这样的元素等


  • function getSubsets(arr) {
    let length = arr.length
    let lengthMinus2 = length - 2
    if (length > 1) {
    let iterationCount = length + 2 * lengthMinus2 + 1
    return Array.from({
    length: iterationCount
    }, (_, i) => {
    if (i < length) {
    return arr[i]
    } else if ((i - lengthMinus2) <= length) {
    return arr.slice(0, i - lengthMinus2)
    } else {
    return arr.slice(i - lengthMinus2 - length)
    }
    })
    } else {
    return arr
    }
    }

    console.log(getSubsets([1, 2, 3]))
    console.log(getSubsets([1, 2, 3, 4]))
    console.log(getSubsets([1, 2, 3, 4, 5]))

    关于javascript - 尝试提取连续子数组时返回的圆形对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60794998/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com