gpt4 book ai didi

javascript - 松散类型的 indexOf()?

转载 作者:行者123 更新时间:2023-11-30 07:25:02 25 4
gpt4 key购买 nike

假设我有数组:

[1, 2, 3, 4]

现在假设我想知道 ==(不是 ===)给定值的值的第一个索引,例如“3”。对于这种情况,我想返回 2,但 Array.indexOf 返回 -1。

:(

最佳答案

2021-04-13 更新:引入了 ES6 findIndex()和箭头函数,所以你现在可以做...

> [1,2,3,4].findIndex(v => v == '3')
2

[原始答案]

好吧,这是天真的实现......

function looseIndex(needle, haystack) {
for (var i = 0, len = haystack.length; i < len; i++) {
if (haystack[i] == needle) return i;
}
return -1;
}

例如

> [0,1,2].indexOf('1')
-1 // Native implementation doesn't match
> looseIndex('1', [0, 1, 2])
1 // Our implementation detects `'1' == 1`
> looseIndex('1', [0, true, 2])
1 // ... and also that `true == 1`

(这种方法的一个好处是它适用于可能不支持完整 Array API 的对象,例如 NodeListargument。)

如果您的数组已排序,您可以进行二分查找以获得更好的性能。参见 Underscore.js' sortedIndex code举个例子

关于javascript - 松散类型的 indexOf()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20206684/

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