我想從陣列中洗掉特殊字符和字母,并在 JavaScript 中計算陣列中剩余整數的總和。
const arr = ["13,d42", "d44f2", "1g5", "1c42"];
let numbersOnly = (val) => {
if (typeof val === "number") {
// replace number with string to get only string values in an array.
return val;
} else {
let temp = val.split("");
// document.write(temp);
let newArr = [];
for (let i = 0; i < temp.length; i ) {
if (typeof temp[i].parseInt() === 'number') {
document.write(i)
newArr.push(temp[i]);
}
}
// return newArr;
// document.write(newArr)
}
};
let numbers = arr.map(numbersOnly).reduce((partialSum, a) => partialSum a, 0);
document.write(numbers);
uj5u.com熱心網友回復:
不要將陣列中的字符洗掉join到一個字串中,而是回傳一個matching僅由數字 0-9 組成的新字串陣列(使用簡單的正則運算式),然后reduce在該陣列上對數字求和,確保將字串數字強制為整數第一的。
const arr = ['13,d42', 'd44f2', '1g5', '1c42'];
const sum = arr
.join('')
.match(/\d/g)
.reduce((sum, n) => sum Number(n), 0);
console.log(sum);
旁注:您可能不應該使用document.write:
? 警告:強烈建議不要使用該
document.write()方法。
uj5u.com熱心網友回復:
要決議每個字串的第一個數字,然后使用parseInt.
const arr = ["13,d42", "d44f2", "1g5", "1c42"];
console.log(arr.map(parseInt).filter(i => !!i).reduce((a, b) => a b, 0)); // 15 => the sum of [ 13, 1, 1 ]
如果你想決議所有數字然后
const arr = ["13,d42", "d44f2", "1g5", "1c42"];
console.log(arr.join(' ').match(/\d /g).map(i => i).reduce((a, b) => a b, 0)); // 150 => the sum of [ 13, 42, 44, 2, 1, 5, 1, 42 ]
uj5u.com熱心網友回復:
這可以幫助你嗎?
const arr = ["13,d42", "d44f2", "1g5", "1c42"];
const onlyNumbers = arr
.map((value) => value.replace(/[^0-9]/g, "")) // get just numbers
.reduce((pv, cv) => parseInt(pv) parseInt(cv)); // add up the numbers
console.log(onlyNumbers);
uj5u.com熱心網友回復:
我創建了getNumber,它接受一個字串作為引數并回傳它包含的數字。
例如,如果我們傳遞“13,d42”,那么它將回傳 1342 作為數字。
而我的另一個函式getTotalSum將為所有字串呼叫該函式并執行getNumber回傳的所有數字中的一些;
const arr = ["13,d42", "d44f2", "1g5", "1c42"];
const getNumber = (numberString) => {
let numberRes = '';
for(let i = 0; i< numberString.length;i ){
if(!isNaN(parseFloat(numberString[i]))){
numberRes = numberString[i];
}
}
return parseFloat(numberRes);
}
const getTotalSum = (arr) => {
let sum = 0;
arr.forEach(el =>{
sum = getNumber(el)
});
return sum;}
uj5u.com熱心網友回復:
如果您只想決議陣列中的每個單獨的字串,則解決方案非常簡單。
const arr = ["13,d42", "d44f2", "1g5", "1c42"];
const numbersOnly = (val) => {
const re = /\D/g;
return parseInt(val.replaceAll(re, ""));
}
let numbers = arr.map(numbersOnly).reduce((partialSum, a) => partialSum a, 0);
console.log(numbers);
但更重要的是,你想要什么答案?您是將“13,d42”視為 13,42 還是 1342?
uj5u.com熱心網友回復:
// Fn to remove numeric part from input string
const strinNonNumeric=(str)=>{return str.replace(/\D/g,'');}
let input = ["13,d42", "d44f2", "1g5", "1c42"];
// Convert array to numeric array
let numericArray=input.map(item=>(Number(strinNonNumeric(item))))
// Sum array elements
const sum = numericArray.reduce((partialSum, a) => partialSum a, 0);
console.log(sum);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/485821.html
標籤:javascript 数组 正则表达式
上一篇:如何修復faktoripsClassloaderRuntimeRepository不可序列化:java.io.NotSerializableException
