从数组计算器过滤数字

我正在构建一个计算器并['1','2','+','5','4']从输入中获得以下数组,我想将这些数字过滤为[12,'+',54].


我将如何在 javascript 中做到这一点?


这是我尝试过的,但这种方法只能过滤掉单数,我想要整数。


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


let numbers = [];

input.forEach(el => {

    if(!isNaN(parseFloat(el) && !isFinite(parseFloat(el))){

        numbers.push(el);

    }

})


繁星coding
浏览 136回答 3
3回答

一只名叫tom的猫

您可以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);

眼眸繁星

一种方法是join使用matchlet arr = ['1','2','+','5','4']let giveMeDigits = (arr) =>{  return arr.join('').match(/\d+/g).map(e=> +e)}console.log(giveMeDigits(arr))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript