微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 forEach 循环遍历一系列数字,并将包含整数 1 的任何数字替换为“Beep”

如何解决使用 forEach 循环遍历一系列数字,并将包含整数 1 的任何数字替换为“Beep”

我是 javaScript 的新手,在循环和编写函数方面有点挣扎。我试图提出一个循环遍历我的 rangeArray 的函数,其中用户输入的数字是数组的末尾,并且每个包含 1 的整数都被替换为“Beep”,直到用户输入的数字。例如:[ 0,"哔",2,3,4,5,6,7,8,9,12 ]。 12 和 2 将不同,因为稍后我打算添加一个例外,如果一个数字包含任何整数 2,它将取代“Beep”并将其替换为“Boop”。有谁知道这个函数是如何编写的?到目前为止,我已经尝试编写 .includes 甚至使用 splice,但到目前为止我只能替换数字 1 而没有其他内容。帮助将不胜感激!谢谢:)

这是我目前的代码

function convertToNumber(input) {
  let parsedInput = parseInt(input);
  console.log(input);
  if (!isNaN(parsedInput)) {
    return parsedInput;
  } else {
    return false;
  }
}
function rangeOfNumbers(start,end) {
  let rangeArray = [];
  for (let i = start; i <= end; i++) {
    rangeArray.push(i + " ");
    
  }
  if (rangeArray); {
    rangeArray.forEach (function (number) {
      rangeArray.splice(1,'1',"Beep");
    }); return rangeArray;
  };
}


console.log(rangeOfNumbers(0,12));

解决方法

要创建新数组,请使用 Array.prototype.mapRegExp.prototype.test 将整数转换为字符串并测试是否包含特定值:

const beepify = arr => arr.map(v => (
  /2/.test(v) ? "Boop" :
  /1/.test(v) ? "Beep" :
v));

console.log(beepify([0,1,2,3,4,5,6,7,8,9,10,11,12]));

另请阅读关于 Ternary Operator 的内容,它根据需要以替代方式在上面使用。

,

您可以使用 Array#map

function rangeOfNumbers(start,end) {
  let rangeArray = [];
  for (let i = start; i <= end; i++) {
    rangeArray.push(i + "");
  }
  return rangeArray.map(x => x.includes("2") ? "Boop" : x.includes("1") ? "Beep" : x);
}
console.log(rangeOfNumbers(0,12).join());

Array.from 也可以使用。

function rangeOfNumbers(start,end) {
  return Array.from({length:end-start+1},(_,i)=>(i+start+"").includes("1") ? "Beep": i + start);
}
console.log(rangeOfNumbers(0,12).join());

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。