我正在构建一个计算器并['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);
眼眸繁星
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))
添加回答
举报
0/150
提交
取消