該算法題來(lái)自于 codewars【語(yǔ)言: javascript】,翻譯如有誤差,敬請(qǐng)諒解~
- 任務(wù)
- 查找并返回?cái)?shù)組中奇數(shù)的立方和舶吗。只要其中某一個(gè)值不是數(shù)字,此函數(shù)將返回undefined(在PHP中為NULL)歹颓。
- 例如:
cubeOdd([1, 2, 3, 4])坯屿,返回 28。
cubeOdd([-3,-2,2,3])巍扛,返回 0领跛。
cubeOdd(["a",12,9,"z",42]),返回 undefined撤奸。
- 解答
- 其一
const cubeOdd = arr => {
const array = arr.filter(el=>typeof el != 'number');
let sum = 0;
array.length ? sum = undefined : arr.filter(el=>el%2).forEach(el => {sum += Math.pow(el,3)});
return sum;
}
- 其二
function cubeOdd(arr) {
var sum = 0;
for (var i = 0; i <arr.length; i++){
var cubed = (arr[i]*arr[i]*arr[i]);
if (isNaN(cubed)) return undefined;
if(cubed % 2 != 0 )sum += cubed;
}
return sum;
}
- 其三
const cubeOdd = arr => arr.some(x=> +x !== x) ? undefined : arr.filter(x=>x%2!=0).reduce((s,x)=>s+x**3,0);
- 其四
const undefiner = v => isNaN(v) ? undefined : v;
const cubeOdd = arr => undefiner(arr.reduce((s, v) => s + v*v%2*v*v*v, 0));
- 其五
const cubeOdd=a=>a.filter(x=>typeof x != "number").length?undefined:a.filter(x=>x%2).map(x=>Math.pow(x,3)).reduce((a,b)=>a+b,0)