为了账号安全,请及时绑定邮箱和手机立即绑定

从数组计算器过滤数字

从数组计算器过滤数字

繁星coding 2021-06-09 17:25:16
我正在构建一个计算器并['1','2','+','5','4']从输入中获得以下数组,我想将这些数字过滤为[12,'+',54].我将如何在 javascript 中做到这一点?这是我尝试过的,但这种方法只能过滤掉单数,我想要整数。更新:我想将运算符也保留在数组中。我将如何修复正则表达式?let numbers = [];input.forEach(el => {    if(!isNaN(parseFloat(el) && !isFinite(parseFloat(el))){        numbers.push(el);    }})
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

您可以join将数组转换为单个字符串,然后split在任何非数字 ( [^0-9]) 字符上使用 RegEx 。因为输出将是字符串,所以您需要.map(n=>+n)将它们转换为整数。


const arr = ['1', '2', '+', '5', '4', '-', '8'];

const result = arr.join('').split(/[^0-9]/).map(n => +n);

console.log(result);

更新:我想将运算符也保留在数组中。我将如何修复正则表达式?


与上面相同,只需将正则表达式包裹在括号中即可形成捕获组。您还需要对 int ( +n || n)进行条件检查,因为数组现在具有字符串。


const arr = ['1', '2', '+', '5', '4', '-', '8'];

const result = arr.join('').split(/([^0-9])/).map(n => +n || n);

console.log(result);


查看完整回答
反对 回复 2021-06-24
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

一种方法是join使用match


let arr = ['1','2','+','5','4']


let giveMeDigits = (arr) =>{

  return arr.join('').match(/\d+/g).map(e=> +e)

}


console.log(giveMeDigits(arr))


查看完整回答
反对 回复 2021-06-24
  • 3 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信