如何将特定元素从一个数组移动到另一个数组

How can I move specific elements from one array to another?

本文关键字:数组 一个 移动 另一个 元素      更新时间:2024-04-02

我正在尝试对包含"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:字符串,它都不起作用。

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"]
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"]

也许这也可以。

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:/,"") + '"}'));