如何将一个数组中的某些部分转换为 javascript 中的另一个字符

How to take certain parts in one array and convert them into another character in javascript

我创建了一个代码,可以将颜色 red 识别为 "on",将颜色 blue 识别为 "off",这些 on'soff 的 然后 "pushed" 到一个名为 initial 的空数组中,这可以在下面看到。

if (red > blue){
    initial.push("on");
    console.log(initital);
    console.log(initial.length);
    return true;
}

else {
    initial.push("off");
    console.log(initial);
    console.log(initial.length);
    return false;

}

当这是 运行 并且显示如下输出时:

[on, on, on, off, off, off, on, on, on, off, off, off, on]

但我需要将这些 on'soff's 变成破折号 (_) 和点 (.) 和 .push 它们在 另一个名为 senseMake 的数组中 senseMake,如果可能的话。

规则是:

  • 开启 1–2 个时间单位 = 点
  • 打开 ≥ 3 个时间单位 = Dash

已尝试创建 for 循环但无法正常工作,请帮忙。

所以上面数组的结果应该是: [_, ,_, ,.]

我使用的循环是

for (i=0; i<initial.length; i += 2) senseMake.push("."); console.log(senseMake);

for (i=0; i<initial.length; i += 3) senseMake.push("_"); console.log(senseMake);

这是一个使用正则表达式的有效解决方案(无迭代)。整个事情可能在 2 行左右,即:

var initial = ['on', 'on', 'on', 'off', 'off', 'off', 'on', 'on', 'on', 'off', 'on', 'off'];
var senseMake = initial.join('').replace(/(on){3,}/gi, '_').replace(/(on){1,2}/gi, '.').replace(/off/gi, '').split('');

但我在代码片段中将其分成多行以使其更易于理解。

var initial = ['on', 'on', 'on', 'off', 'off', 'off', 'on', 'on', 'on', 'off', 'on', 'off'];
var senseMake = initial.join(''); // join the elements of the array into a string
senseMake = senseMake.replace(/(on){3,}/gi, '_'); // replace every instance of 3+ 'ons' with a _
senseMake = senseMake.replace(/(on){1,2}/gi, '.'); // replace every instance of 1-2 'ons' with a .
senseMake = senseMake.replace(/off/gi, ''); // replace every instance of 'off' with an empty string
senseMake = senseMake.split(''); // split every character into the elements of an array
document.write(JSON.stringify(senseMake, null, '  ')); // display result in window
* { font-family: monospace; }

希望对您有所帮助!