gpt4 book ai didi

jQuery $.each 从数字数组返回 "undefined"

转载 作者:行者123 更新时间:2023-12-01 06:40:06 25 4
gpt4 key购买 nike

例如:

var d = [];

d[3] = 'qwe';
d[10] = '213';

console.log(d);
for(i in d){
console.log(i);
console.log(d[i]);
}

$.each(d, function(i, v){
console.log(i);
console.log(v);

});

第一个输出:[未定义,未定义,未定义,“qwe”,未定义,未定义,未定义,未定义,未定义,未定义,“213”]

for 循环仅返回两个正确值,但 $.each 循环返回 10 个元素,其中 8 个“未定义”。我明白为什么会发生这种情况,但我想在我的脚本中使用 jQuery $.each

谢谢。

最佳答案

您显示的输出与您显示的任何一个循环都不匹配,但要点似乎是您不想看到 undefined数组条目。

I understand why it happens, but I want use exactly jQuery $.each for my script.

如果你真的想这样做,那很简单:

$.each(d, function(i, v){
if (d.hasOwnProperty(i)) {
console.log(i);
console.log(v);
}
});

这将清除数组中不存在的数组索引。您可以使用typeof v[i] !== 'undefined'但如果您实际上将数组元素设置为 undefined ,则会给出错误的结果(所以它存在,但其值为 undefined )。

jQuery 以正常方式迭代数组,从索引 0 开始并浏览索引 length - 1for..in循环遍历对象中的属性,因此不会循环不存在的数组条目(但是,按照您编写的方式,从 Array.prototype 中获取可枚举的任何内容; more here)。

循环的方法:

  1. $.each ;见上文。

  2. 特别是对于数组和类似数组的东西,稳重但有用的 for (index = 0; index < v.length; ++index) 。在本例中,由于数组是稀疏的,因此您需要 v.hasOwnProperty(i)typeof v[i] !== 'undefined' (如果您不关心我上面列出的情况)以确保您看到的条目存在。

  3. 对于一般对象(包括数组,但要小心):for..in :

    for (propName in v) {
    // Check whether `v` has the property itself, or inherited it
    if (v.hasOwnProperty(propName)) {
    // `v` has the property itself

    // If looping an array or array-like thing and you want to see
    // only the *elements* (properties with numeric indexes) and
    // skip any non-element properties:
    if (String(parseInt(propName, 10)) === propName) {
    // It's an array element
    }
    }
    }

关于jQuery $.each 从数字数组返回 "undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5847294/

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