javascript - 按索引切片数组并插入空数组

标签 javascript arrays slice

我有 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/

相关文章:

javascript - 显示瞬时选中的单选按钮的数量

javascript - 将长数字分解为其组成整数时出现奇怪的错误

c# - 如何在 C# 中对 double 组进行切片

PHP json_encode gapi (google analytics) 数组返回空值

javascript - Angular2-模态确认回调

JavaScript onDeviceReady 未触发

ios - 将泛型类型分配给具有 AnyObject 类型的泛型

javascript - 对值最接近 1 的数组进行排序

arrays - 查找列表中的最小数字

go - 为什么不能转换 Slice 类型?