我有 2 个数组。其中之一(config
)决定从现有数组(items
)中将多少元素推送到新数组(finalData
)中。
我尝试使用slice
,但在第三个索引处,该值与第二个索引重复。尝试运行代码,你就会明白了。这是我的sandbox
期望的输出是我通过使用config
索引得到了一个精确分割的数组。
const config = [1,2,1, 2];
const items = ["one", "two", "three", "four", "five", "six", "seven", "eight"];
const finalData = []
for (let i = 0; i < items.length; i++) {
if(config[i] !== undefined) {
finalData.push(items.slice(i, config[i] + i))
} else {
finalData.push([items[i]])
}
}
console.log(finalData);
.as-console-wrapper { max-height: 100% !important; }
最佳答案
我建议迭代配置数组而不是项目数组
const config = [1, 2, 1, 2];
const items = ["one", "two", "three", "four", "five", "six", "seven", "eight"];
const finalData = [];
let index = 0;
for (let size of config) {
finalData.push(items.slice(index, index + size));
index += size;
}
// then collect any remaining
while (index < items.length) {
finalData.push([ items[index++] ]);
}
console.log(JSON.stringify(finalData));
如果长度项可以短于定义的配置,您可能需要添加一些检查以防止将空数组添加到最终数据
关于javascript - 按索引切片数组并插入空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73787793/