如何将一个数组中的某些部分转换为 javascript 中的另一个字符
How to take certain parts in one array and convert them into another character in javascript
我创建了一个代码,可以将颜色 red
识别为 "on",将颜色 blue
识别为 "off",这些 on's 和 off 的 然后 "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's 和 off'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; }
希望对您有所帮助!
我创建了一个代码,可以将颜色 red
识别为 "on",将颜色 blue
识别为 "off",这些 on's 和 off 的 然后 "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's 和 off'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; }
希望对您有所帮助!