Underscore.js相当于jQuery的$ .inArray()?

时间:2016-03-16 15:24:34

标签: jquery underscore.js

underscore.js是否具有jQuery函数$.inArray的等价物?我试图在对象中找到重复项并返回唯一的值。我在jQuery中完成了这个,但是想使用下划线JS。

var result = [];
$.each(formValuesObj.fields.list, function (i, e) {
    if ($.inArray(e, result) == -1) 
        result.push(e);
});

formValuesObj.fields.list = result;

$.each(formValuesObject, function () {
    if (this.fieldSelectId == formValues3.fieldSelectId) {
        contains = true;
    }
});

3 个答案:

答案 0 :(得分:3)

你不需要为这个,简单的ol' javascript让你满意!

result.indexOf('value') == -1

答案 1 :(得分:2)

Underscore在一个函数中执行此操作:

var uniqueValuesArray = _.uniq(duplicatedValuesArray);
  

uniq _.uniq(数组,[isSorted],[iteratee])别名:唯一

     

使用===生成数组的无副本版本,以测试对象相等性。特别是仅保留每个值的第一次出现。如果您事先知道数组已排序,则为isSorted传递true将运行更快的算法。如果要根据转换计算唯一项,请传递iteratee函数。

http://underscorejs.org/#uniq

答案 2 :(得分:0)

您可以在filter中使用indexOfunderscore.js

E.g。

var arr= [];
var result= [1, 2, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 8, 9];

var notDuplicatedOnes = _.filter(result, function(num) {
    if (arr.indexOf(num) == -1) {
       arr.push(num);
       return num;
    }
});
// Returns [1, 2, 3, 4, 5, 6, 7, 8, 9]