gpt4 book ai didi

javascript - 普通 for 循环和 for...in 之间的区别?

转载 作者:行者123 更新时间:2023-12-03 02:55:32 31 4
gpt4 key购买 nike

我正在尝试编写一个函数来满足以下要求:

给定一个对象和一个键,“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;
}

根据我的理解,两个循环和随后的条件推送具有相同的逻辑。为什么其中一个比另一个更有效?

最佳答案

你让事情变得比需要的更复杂。我只想这样做:

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);

关于javascript - 普通 for 循环和 for...in 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47645503/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com