gpt4 book ai didi

javascript - JS如何展平嵌套数组

转载 作者:行者123 更新时间:2023-11-30 11:10:43 25 4
gpt4 key购买 nike

我得到的问题是;

给定一个或多个嵌套数组,返回一个新的平面数组,其中所有嵌套数组的所有元素均按其原始顺序排列

我想出的答案是;

function flattenArray (arrayOfArrays) {  
arrays = arrays.reduce(function(a, b){
return a.concat(b);
}, []);

console.log(merged);

我的答案正在接受测试;

describe("flattenArray", () => {
it("returns a flat array with all the elements of the nested arrays in their original order", () => {
let arrayOfArrays, expected;
arrayOfArrays = [[1, 2], [], [3], ["hello", true]];
expected = [1, 2, 3, "hello", true];
expect(flattenArray(arrayOfArrays)).to.eql(expected);

arrayOfArrays = [[1], [2], [[3, 4]]];
expected = [1, 2, [3, 4]];
expect(flattenArray(arrayOfArrays)).to.eql(expected);
});
it("does not mutate the passed array, i.e. returns a new array, leaving the original untouched", () => {
const original = [[1, 2], [], [3, 4]];
const flat = flattenArray(original);
expect(original).to.not.equal(flat);
expect(original).to.eql([[1, 2], [], [3, 4]]);
});
});

我不知道还有什么办法可以尝试解决这个问题,有没有人有任何建议。

最佳答案

您需要通过获取递交的数组 arrayOfArrays 来返回缩减数组。

function flattenArray(arrayOfArrays) {  
return arrayOfArrays.reduce(function(a, b) {
return a.concat(b);
}, []);
}

对于多个嵌套数组,您需要检查数组并使用函数的递归。

function deepFlattenArray(arrayOfArrays) {
return arrayOfArrays.reduce(function(a, b) {
return a.concat(Array.isArray(b) ? deepFlattenArray(b) : b);
}, []);
}

function flattenArray(arrayOfArrays) {
return arrayOfArrays.reduce(function(a, b) {
return a.concat(b);
}, []);
}

console.log(deepFlattenArray([[[1, 2], [3, [4, 5], 6], 7], 8]));
console.log(flattenArray([[[1, 2], [3, [4, 5], 6], 7], 8]));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - JS如何展平嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53856348/

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