将数组拆分为一个块,然后从原始数组中删除该块
Split array into a chunk and then remove the chunk from the original array
这是我拥有的数据类型:
["2", "Something1", "Something2", "4", "Something3", "Something4", "Something5", "Something6", "2", "Something7", "Something8"]
数字表示块应该有多大。
const splitInput = (input: string[]) => {
const chunks: string[][] = [];
input.forEach((element) => {
if (element.length === 1) {
const chunk = input.splice(input.indexOf(element) + 1, parseInt(element));
console.log(chunk);
chunks.push(chunk)
}
});
上面的代码只有在没有相同的数字时才有效,因为 indexOf 找到了第一个出现的地方。如何正确计算 indexOf()
的 fromIndex
或从数组中删除所有已删除的元素(包括数字)?
这将是预期的输出
[ ["Something1", "Something2"], ["Something3","Something4","Something5","Something6"],["Something7", "Something8"] ]
在有人问之前,是的,这是我家庭作业的一部分(不是全部,这只是一个开始,我将不得不对大块做一些事情)。在过去的 2 个小时里,我一直在尝试一切,但无法弄清楚。
我不知道如何修正你的方法,但另一种方法是遍历块大小并用块填充另一个数组:
function splitInput(elements) {
const result = [];
for (let i = 0, end = elements.length; i < end; i += 1 + +elements[i]) {
result.push(elements.slice(i + 1, i + 1 + +elements[i]));
}
return result;
}
const elements = ["2", "Something1", "Something2", "4", "Something3", "Something4", "Something5", "Something6", "2", "Something7", "Something8"];
console.log(splitInput(elements));
这是我拥有的数据类型:
["2", "Something1", "Something2", "4", "Something3", "Something4", "Something5", "Something6", "2", "Something7", "Something8"]
数字表示块应该有多大。
const splitInput = (input: string[]) => {
const chunks: string[][] = [];
input.forEach((element) => {
if (element.length === 1) {
const chunk = input.splice(input.indexOf(element) + 1, parseInt(element));
console.log(chunk);
chunks.push(chunk)
}
});
上面的代码只有在没有相同的数字时才有效,因为 indexOf 找到了第一个出现的地方。如何正确计算 indexOf()
的 fromIndex
或从数组中删除所有已删除的元素(包括数字)?
这将是预期的输出
[ ["Something1", "Something2"], ["Something3","Something4","Something5","Something6"],["Something7", "Something8"] ]
在有人问之前,是的,这是我家庭作业的一部分(不是全部,这只是一个开始,我将不得不对大块做一些事情)。在过去的 2 个小时里,我一直在尝试一切,但无法弄清楚。
我不知道如何修正你的方法,但另一种方法是遍历块大小并用块填充另一个数组:
function splitInput(elements) {
const result = [];
for (let i = 0, end = elements.length; i < end; i += 1 + +elements[i]) {
result.push(elements.slice(i + 1, i + 1 + +elements[i]));
}
return result;
}
const elements = ["2", "Something1", "Something2", "4", "Something3", "Something4", "Something5", "Something6", "2", "Something7", "Something8"];
console.log(splitInput(elements));