无法读取 JavaScript 中 null 的属性“length”
2017-02-10
10664
我正在 codewars 上进行 此 挑战,它通过了所有测试,但我收到一个错误:
TypeError: Cannot read property 'length' of null
所以我无法通过挑战。有人能告诉我这个代码有什么问题吗?
function averages(numbers) {
for(var i=0; i<numbers.length; i++){
if(numbers.length < 2 || numbers[i] === ""){
return [];
} else {
numbers[i] = (numbers[i] + numbers[i+1]) / 2;
}
}
numbers.pop();
return numbers
}
3个回答
您没有处理指令中的一个重要部分:
If the array has 0 or 1 values or is null or None, your method should return an empty array.
function averages(numbers) {
if (!numbers) return []; // return empty array
for(var i=0; i<numbers.length; i++){
if(numbers.length < 2 || numbers[i] === ""){
return [];
} else {
numbers[i] = (numbers[i] + numbers[i+1]) / 2;
}
}
numbers.pop();
return numbers
}
Turnip
2017-02-10
你只需要测试参数是否为空
//test if numbers is null
if(numbers == null){
return [];
}
for(var i=0; i<numbers.length; i++){
if(numbers.length < 2 || numbers[i] === ""){
return [];
} else {
numbers[i] = (numbers[i] + numbers[i+1]) / 2;
}
}
numbers.pop();
return numbers
Weedoze
2017-02-10
function averages(numbers) {
if(numbers)
{
for(var i=0; i<numbers.length; i++){
if(numbers.length < 2 || numbers[i] === ""){
return [];
} else {
numbers[i] = (numbers[i] + numbers[i+1]) / 2;
}
}
numbers.pop();
return numbers
}
else
{
return [];
}
}
只需向您的数字变量添加一个空检查即可。然后您就可以开始了。
Smit
2017-02-10