我正在尝试整理每个字符串,其中包含“INIT:”并将其放入另一个数组中。
这是我的代码:
for (j = 0; j < splitCode.length; j++) {
if (splitCode[j].indexOf('INIT:') > -1) {
noInit = splitCode[j].replace('INIT:', '');
cmdList.push('{id:MinecartCommandBlock,Command:"'+noInit+'"}');
splitCode.splice(j, 1);
}
}
如果找到INIT:
,则会将noInit
设置为不包含INIT:
的字符串。然后,它将它添加到cmdList
数组并从其他数组中删除代码。这有效,但它只能工作一次。对于每个后续INIT:
字符串,它都不起作用。
答案 0 :(得分:0)
splice
重新索引数组,因此删除项目会使您跳过下一个项目。要避免这种情况,请向后迭代,或使用--j
:
var splitCode = ['INIT:1', 'INIT:2'],
cmdList = [];
for (j = 0; j < splitCode.length; ++j) {
if (splitCode[j].indexOf('INIT:') > -1) {
cmdList.push('Cmd:' + splitCode[j].replace('INIT:', ''));
splitCode.splice(j, 1); // This reindexes the array
--j; // Update the iterator index to reflect changes
}
}
cmdList; // ["Cmd:1", "Cmd:2"]
答案 1 :(得分:0)
可能这也没关系。
var splitCode = ['INIT:1','INIT:2', 'Boru:5', 'INIT:3','INIT:4'],
cmdList = [];
splitCode.forEach( e => !!/INIT:/.test(e) &&
cmdList.push('{id:MinecartCommandBlock,Command:"' + e.replace(/INIT:/,"") + '"}'));
答案 2 :(得分:0)
var array1 = ["INIT: one", "two", "three", "INIT: four"];
var array2 = [];
array1.forEach(function(e) {
if (e.indexOf("INIT:") == 0) array2.push(e);
})
array2 // <-- ["INIT: one","INIT: four"]