我已经四处寻找方法来做到这一点,但我们找不到任何我理解的东西
我有一个数组[1, 5, 20, 17, 6, 12, 13, 20, 1, 14, 20]
每当数组的元素等于20时,我想用左边的星号包裹它,如[1, 5, *20*, 17, 6, 12, 13, *20*, 1 , 14, *20*]
我还在学习javascript,所以如果你能解释一下你在做什么/为什么它有效,我真的很感激,感谢先进的帮助。
答案 0 :(得分:7)
您可以使用map
let arr = [1, 5, 20, 17, 6, 12, 13, 20, 1, 14, 20]
let result = arr.map(o => o === 20 ? '*20*' : o);
console.log(result);

Doc:map()
答案 1 :(得分:4)
您可以使用Arrays forEach来修改数组的元素。 elem
是每个元素,i
是相应的索引。我们正在使用forEach
来修改现有数组。因为这是你想要的......
let arr = [1, 5, 20, 17, 6, 12, 13, 20, 1, 14, 20]
arr.forEach((elem, i) => {
if (elem === 20) {
arr[i] = "*20*"
}
})
console.log(arr)
function rollDice(max, times, bonus) {
var rolls = [1, 5, 20, 17, 6, 12, 13, 20, 1, 14, 20];
rolls.forEach((elem, i) => { if (elem === 20) { rolls[i] = "twenty" } });
for (var i = 0; times > i; i++)
{
max = Math.floor(max);
rolls.push(Math.floor(Math.random() * max) + 1 | + parseInt(bonus));
}
console.log(rolls);
}
rollDice(20, 5);

答案 2 :(得分:0)
您遇到的问题是您需要将整数转换为字符串。 JavaScript有几种巧妙地在幕后操作的方法,但是如果你仍然对它有所了解,最好明确你开始使用哪些数据类型(整数),以及你期望以什么样的数据类型结束(字符串)。
您转换数组,“映射”每个项目,将其转换为字符串,然后如果字符串匹配“20”,则添加星号。
const start_array = [1, 5, 20, 17, 6, 12, 13, 20, 1, 14, 20];
const new_array = start_array.map((integer) => {
let number_string = integer.toString();
if (number_string === "20") {
number_string = "*" + number_string + "*";
}
return number_string;
})
console.log(new_array);