我正在尝试编写一个函数来满足以下要求:
给定一个对象和一个键," getElementsThatEqual10AtProperty"返回一个数组,其中包含位于给定键的数组中所有等于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;
}
根据我的理解,循环和后续条件推送都具有相同的逻辑。为什么一个人在另一个人工作?
答案 0 :(得分:1)
你让它变得比它需要的更复杂。我会这样做:
function getSameVals(yourArray, val){
var a = [];
for(var i=0,l=yourArray.length; i<l; i++){
if(yourArray[i] === val){
a.push(val);
}
}
return a;
}
var ten = getSameVals(obj.key, 10);
console.log(ten);