gpt4 book ai didi

javascript - JS 和 jQuery : inArray() and indexOf() are not working properly if indexes are strings?

转载 作者:行者123 更新时间:2023-11-28 12:48:55 25 4
gpt4 key购买 nike

我有一个像这样的数组:

var arr = [];
arr['A string'] = '123';
arr['Another string'] = '456';

我正在尝试查找“123”或“456”的索引。

两者:

var string = $.inArray('123', arr)

var string = arr.indexOf('123')

给我-1。当索引是字符串时是否可以使其工作?

最佳答案

与所有 Array 方法和 length 属性一样,Array 对象的 indexOf 方法仅考虑 Array 的数字属性。这些属性的名称是无符号整数。要测试具有特定值的属性是否存在,您可以对任何对象(包括数组)执行类似的操作。无法保证属性名称的枚举顺序,因此如果有多个具有特定值的属性,那么您无法确定将获得哪个属性:

function findPropertyWithValue(obj, val) {
for (var i in obj) {
if (obj.hasOwnProperty(i) && obj[i] === val) {
return i;
}
}
return null;
}

var arr = [];
arr['A string'] = '123';
arr['Another string'] = '456';
alert(findPropertyWithValue(arr, "123")); // 'A string'

请注意,由于所有属性名称(包括数字名称)都会转换为字符串,因此您可以使用字符串分配数组属性:

var arr = [];
arr["1"] = "foo";
arr[3] = "bar"
arr.indexOf("foo"); // 1
arr.indexOf("bar"); // 3

关于javascript - JS 和 jQuery : inArray() and indexOf() are not working properly if indexes are strings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4239621/

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