负数索引在lodash的_.includes中如何工作?

时间:2019-09-16 13:58:48

标签: javascript lodash

_includes中的负数无法正常工作。

console.log(_.includes(['a','b','c'],'b', -1)); //false
console.log(_.includes(['a','b','c'],'b', -2)); //true
console.log(_.includes(['a','b','c'],'b', -3)); //true
console.log(_.includes(['a','b','c'],'b', -4)); //true

...等等“真”

在“ -3”,“-4”索引的情况下,我期望输出为False-s,而不是True

我想念什么?

2 个答案:

答案 0 :(得分:2)

documentation说:

_.includes(collection, value, [fromIndex=0])
     

检查value中是否有collection。如果collection是字符串,则为   检查value的子字符串,否则SameValueZero是   用于相等比较。 如果fromIndex为负,则使用   作为距collection末尾的偏移量。

     

     

0.1.0

     

参数

     
      
  • collection (Array|Object|string):要检查的集合。
  •   
  • value (*):要搜索的值。
  •   
  • [fromIndex=0] (number):要搜索的索引。
  •   
     

返回

     

(boolean):如果找到值,则返回true,否则返回false。

@EDIT

示例

_.includes(['a','b','c','d'],'b', -3); //=> true

'b'开始,并且由于'b'包含在子数组中,因此您得到true

_.includes(['a','b','c','d'],'b', -2) //=> false

'c'开始,并且由于'b'不包含在子数组中,因此得到false

答案 1 :(得分:1)

negative 索引就像

array[array.length - index]

在数组['a','b','c']中,-1将是'c'

array[3 - 1]  =  array[2] = 'c'
//    ^ length of `['a','b','c']`


_.includes(['a','b','c'],'b', -3)

array[3 - 3] = array[0]
//    ^ length of `['a','b','c']`

它开始从索引'b'到索引0搜索3