给定此数组['1',23,null,46.5,'34e2',false,'true',40],如何将其中的数字元素除以10,同时保持非数字其中的元素,而不修改这些值。 我到目前为止所做的是:
var divide = numbers.map(function(x){
if(typeof x === 'number' && isFinite(x)){
return x / 10;
}
});
console.log(divide); // [undefined, 2.3, undefined, 4.65, undefined, 6: undefined, 7: undefined, 9: 4]
答案 0 :(得分:3)
您的映射函数必须为每个元素返回一个值,而不仅仅是数字:
var divide = numbers.map(function(x){
if(typeof x === 'number' && isFinite(x)){
return x / 10;
} else return x;
});
答案 1 :(得分:2)
问题是const lSplit = (pat, s) => substring(0, search(pat,s), s);
将从对每次迭代对数组执行的匿名函数返回一个值,并且没有要返回的特定值,它将 - 就像任何JavaScript函数一样 - 只返回{{1如果没有提供要返回的特定值(如您所知);所以关键是如果该值与Array.prototype.map()
评估的条件不匹配,则返回当前值。
undefined
顺便说一下,由于您没有在任何地方使用if
,并且如果ES6`是您和您的用户的选项,您还可以使用箭头功能:
var numbers = ['1', 23, null, 46.5, '34e2', , false, 'true', , 40],
divide = numbers.map(function(x) {
if ('string' === typeof x && isFinite(x)) {
return x / 10;
} else {
return x;
}
});
console.log(divide);
参考文献:
答案 2 :(得分:2)
您正在返回数值,但如果div.demo p, div.demo ul{
color:purple;
}
不是数字,则您不会处理该情况,只需在if条件之后添加x
并且它将完美运行:)
return x