gpt4 book ai didi

javascript - 获取属性中最大的元素

转载 作者:行者123 更新时间:2023-11-30 09:17:39 24 4
gpt4 key购买 nike

我正在尝试获取给定数组中的最大元素,以下是要求:

  • 如果数组为空,则返回undefined。
  • 如果给定键的属性不是数组,它应该返回 undefined。
  • 如果键没有属性,它应该返回 undefined。

    变量对象 = { 键:[1, 2, 4]};

有人可以向我解释为什么我放的时候

!obj.hasOwnProperty(key)

IF 函数的末尾我得到错误:如果属性不存在则应该返回 undefined。 但是当我把它放在 的开头时strong>IF 函数,顺利通过。

var obj = {
key: [1, 2, 4]
};

function getLargestElementAtProperty(obj, key) {
if (obj[key].length === 0 || !Array.isArray(obj[key]) || !obj.hasOwnProperty(key)) {
return undefined;
}
var largestElement = 0;
for (var i in obj[key]) {
if (largestElement < obj[key][i]) {
largestElement = obj[key][i];
}
}
return largestElement;
}

最佳答案

!obj.hasOwnProperty(key) 放在 if 语句的开头时,如果对象没有指定的键(所以 !obj.hasOwnProperty(key) 产生 true),由于 OR short-circuiting,其他检查将不会被评估(简而言之,如果任何条件的计算结果为真,则不会计算任何其他检查,因为整个表达式将始终为真)。

但是,当放在 if 语句的末尾时,obj[key].length === 0 将首先被计算。如果 obj[key] === undefined,计算 obj[key].length 时会发生错误,因为 undefined 没有属性长度。具体来说,错误是:TypeError: Cannot read property 'length' of undefined

关于javascript - 获取属性中最大的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53965160/

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