欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

测试即将插入到数组里的项目的位置 - sortedIndex《 Underscore 基础 》

sortedIndex 这个方法,可以返回即将要插入到数组里面的项目,在这个数组里面的位置是什么,也就是它的索引号是什么。

foods 是一个数组,我们用 sortBy 对它进行了排序,并且把排序之后的结果交给 sortedFoods 这个变量 ...

下面我们可以用 sortedIndex ,去测试一个要插入到这个数组里的项目的位置。

_.sortedIndex ... 第一个参数是要测试的数组 ... 这里就是 sortedFoods ... 第二个参数是要测试的值 ... 我们可以试试 cookie 这个项目如果插入到 sortedFoods 里面它的位置会是什么 ...

_.sortedIndex(sortedFoods, 'cookie')

返回的结果是 2 ,意思就是,如果把 cookie 作为 sortedFoods 里面的一个项目的话,如果保存排序的方式不变,它的位置是 2 ,也就是它会排在 bread 的后面 ...

下面, 我们可以验证一下 ...

先把 cookie push 到 foods 这个数组里面 ...

foods.push('cookie')

然后再对 foods 重新排下顺序 ..

_.sortBy(foods)

你会看到, cookie 的位置,也就是它的索引号,就会是 2 ... 可以使用 indexOf 得到它的位置号 ...

_.indexOf(_.sortBy(foods), 'cookie')

返回的结果是 2 ...

iterator

这个方法还可以再给它一个 迭代器 作为它的参数 ,可以测试指定的排序条件下,项目在列表中的位置。这个迭代器也可以是属性的名字 ... 下面,我们去试一下 ... (#albums)

可以测试一下要往 #albums 里面添加的项目的位置 ... 列表是 albums ... 要测试的值是一个对象 .. 添加一个 artist 属性 .. title 属性,还有 releaseYear 属性 ... 最后再指定一下排序的条件 ... 这里我们设置成 releaeYear ...

它的意思就是,如果按照 releaseYear 这个属性的值进行排序的话,这个即将插入到 albums 里面的项目的位置是多少 ...

_.sortedIndex(albums, {artist: 'Coldplay', title: 'Yellow', releaseYear: 2003}, 'releaseYear')

返回的结果是 ..

2

普通分类: