【发布时间】:2017-03-13 00:42:02
【问题描述】:
问题:
给定一个对象和一个键,“getEvenElementsAtProperty”返回一个数组,其中包含位于给定键的数组的所有偶数元素。
注意事项:
- 如果数组为空,它应该返回一个空数组。
- 如果数组不包含偶数元素,它应该返回一个空数组。
- 如果给定键的属性不是数组,它应该返回一个空数组。
- 如果给定键没有属性,它应该返回一个空数组。
我的代码:
var obj = {
key: [1000, 11, 50, 17]
}; // sample object
function getEvenElementsAtProperty(obj, key) {
var arr = []
if (!obj[key]) arr = []
if (!obj[key] % 2=== 0) arr = []
for (var i = 0; i < obj[key].length; i++){
if (obj[key][i] % 2 === 0) arr.push(obj[key][i])
}
return arr;
}
getEvenElementsAtProperty(obj, 'key') // [1000, 50], yet still doesn't pass
问题:
为什么我仍然收到错误说如果属性不存在,它不会返回空数组?我认为这是由第 3 行完成的:if (!obj[key]) arr = [],如果我将其注释掉,该函数仍会返回相同的内容。这是怎么回事,如果属性不存在,我如何返回一个空数组。
【问题讨论】:
-
尝试使用浏览器的调试器并跟踪代码。使用手表或控制台检查
obj[key]、!obj[key]、!obj[key] %2等的值...您可以通过在函数开头添加debugger;命令来闯入调试器(并运行代码浏览器的开发者工具面板打开)。
标签: javascript arrays properties