Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 所有偶数之和的函数_Javascript - Fatal编程技术网

Javascript 所有偶数之和的函数

Javascript 所有偶数之和的函数,javascript,Javascript,我想创建一个函数,将任何数字和字符的字符串作为一个参数。任务是找到所有偶数(数字)并求和,然后在控制台中显示总值。 例如,如果将以下字符串作为一个参数(“112,sf34,4)-k”传递给此函数,则结果应为:所有偶数之和:10 到目前为止,我已经提出了解决方案,并解决了这个问题。帮助我。提前谢谢 function functionFive(str) { const string = [...str].map(char => { const numberString

我想创建一个函数,将任何数字和字符的字符串作为一个参数。任务是找到所有偶数(数字)并求和,然后在控制台中显示总值。 例如,如果将以下字符串作为一个参数(“112,sf34,4)-k”传递给此函数,则结果应为:所有偶数之和:10

到目前为止,我已经提出了解决方案,并解决了这个问题。帮助我。提前谢谢

function functionFive(str) {
    const string = [...str].map(char => {
        const numberString = char.match(/^\d+$/)
        if (numberString !== null){
            const number = parseInt(numberString)
            return number
        }

    const num = string.map(number=>{
        if (number !== undefined && number%2 === 0){
             console.log(number)
        }
    })
}
functionFive("sau213e89q8e7ey1")
这有帮助吗

函数sumEven(s){
返回s.split(“”).map(x=>+x).filter(x=>x%2==0).reduce((a,b)=>a+b)
}
log(sumeen('idsv366f4386523ec64qe35c'))
我的建议:


函数isNumber(char){
返回parseInt(char)!='NaN';
}
功能五(str){
//1.将str拆分为数组
常量charList=str.split(“”);
//2.过滤掉非数字
常量numberList=str.filter(isNumber);
//3.使用reduce返回数字的总和
返回numberList.reduce((acc,curr)=>curr%2==0?acc+curr:acc,0);
}
功能五(“sau213e89q8e7ey1”)

希望它能帮上忙,而且很容易理解:)

我会用正则表达式搜索除零(因为它不会影响求和)之外的所有偶数个位数,然后对结果数组求和,即

const functionFive=str=>(str.match(/2 | 4 | 6 | 8/g)| |[]))
.reduce((sum,num)=>sum+parseInt(num,10),0)
console.info(functionFive(“sau213e89q8e7ey1”)
试试这个:

   function functionFive(str){
     return  str.split('')
            .filter((el)=> !isNaN(el) && el % 2 === 0)
            .reduce((acc,cur)=> parseInt(acc) + parseInt(cur));
          }
       console.log(functionFive("112,sf34,4)-k"))

使用正则表达式

const functionFive = str => (str.match(/\d/g)||[]).reduce((a,b)=>a=parseFloat(a)+(parseFloat(b)%2==0?parseFloat(b):0),0);

console.log(functionFive("112,sf34,4)-k)"))

得到结果的一行解决方案。希望这有帮助

let text=“2543sadadfh7896”;
让evenNums=text.match(/\d+/g);
让结果=evenNums!==无效的evenNums.join().split(“”).filter(i=>i%2==0).reduce((a,b)=>Number(a)+Number(b)):0;

console.log(result)
下面的代码可以帮助您减少循环次数

函数sumEven(s){
返回s
.拆分(“”)
.filter(x=>x%2==0)
.减少((acc,val)=>acc+数字(val),0);
}

console.log(sumEven(“112,sf34,4)-k)”)112
1
1
2
您的函数不返回任何内容。最重要的是,你有无与伦比的括号。如果字符串中没有数字,这将失败。
+x
是经典:-)我知道这对总和没有影响,但零也是一个偶数。零是偶数,这是我写评论的唯一原因:@megapteranovaengliae我不知道,干杯。我已经更新了我的答案来解释为什么不包括零