1

我有一个数组[1, 5, 20, 17, 6, 12, 13, 20, 1, 14, 20]

每当数组的元素等于 20 时,我想像这样在两边用星号包装它[1, 5, *20*, 17, 6, 12, 13, *20*, 1 , 14, *20*]

我怎样才能做到这一点?

4

3 回答 3

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);

文档:地图()

于 2018-06-06T13:57:37.547 回答
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);

于 2018-06-06T13:58:35.323 回答
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);
于 2018-06-06T14:02:19.617 回答