【发布时间】:2017-12-05 03:16:35
【问题描述】:
我正在尝试编写一个函数来满足以下要求:
给定一个对象和一个键,“getElementsThatEqual10AtProperty”返回一个数组,其中包含位于给定键处等于 10 的数组的所有元素。
注意事项:
- 如果数组为空,它应该返回一个空数组。
- 如果数组不包含等于10的元素,它应该返回 一个空数组。
- 如果给定键的属性不是数组,它应该返回一个 空数组。
- 如果键没有属性,它应该返回一个空数组。
例子:
var obj = {
key: [1000, 10, 50, 10]
};
var output = getElementsThatEqual10AtProperty(obj, 'key');
console.log(output); // --> [10, 10]
方法#1(最后一点失败*如果键处没有属性,它应该返回一个空数组。):
function getElementsThatEqual10AtProperty(obj, key) {
var output = [];
for (var i = 0; i < obj[key].length; i++) {
if (obj[key][i] === 10) {
output.push(obj[key][i]);
}
}
return output;
}
方法 #2 全部通过:
function getElementsThatEqual10AtProperty(obj, key) {
var output = [];
for (let i in obj[key]) {
if (obj[key][i] === 10) {
output.push(obj[key][i]);
}
}
return output;
}
据我了解,循环和随后的条件推送具有相同的逻辑。为什么一个比另一个更有效?
【问题讨论】:
标签: javascript object for-loop properties