用数字包装数组中的项目

时间:2018-06-06 13:55:51

标签: javascript arrays

我已经四处寻找方法来做到这一点,但我们找不到任何我理解的东西

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

每当数组的元素等于20时,我想用左边的星号包裹它,如[1, 5, *20*, 17, 6, 12, 13, *20*, 1 , 14, *20*]

我还在学习javascript,所以如果你能解释一下你在做什么/为什么它有效,我真的很感激,感谢先进的帮助。

3 个答案:

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