【问题标题】:Underscore.js equivalent of jQuery's $.inArray()?Underscore.js 相当于 jQuery 的 $.inArray()?
【发布时间】:2016-03-16 23:49:46
【问题描述】:

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;
    }
});

【问题讨论】:

    标签: jquery underscore.js


    【解决方案1】:

    你不需要下划线,普通的 ol' javascript 已经涵盖了!

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

    【讨论】:

      【解决方案2】:

      下划线在一个函数中执行此操作:

      var uniqueValuesArray = _.uniq(duplicatedValuesArray);
      

      uniq _.uniq(array, [isSorted], [iteratee]) 别名:unique

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

      http://underscorejs.org/#uniq

      【讨论】:

      • 谢谢,我环顾四周,但我想我错过了。
      • 知道为什么我不能将结果分配给变量吗? var 结果 = _.uniq(formValuesObj.fields.list);结果 > 未定义
      • 啊。它可能就地工作。因此,您传递给函数的数组是被更新的数组。从文档中看不太清楚。
      • 我检查过了,但是我传递给它的数组没有得到更新,它仍然有所有重复的值。
      • 绝对可以按照我在答案中所写的方式对我有用:jsfiddle.net/q8ueufLj/1(检查控制台)。 formValuesObj.fields.list 包含的示例是什么?
      【解决方案3】:

      您可以在underscore.js 中使用filterindexOf

      例如

      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]
      

      【讨论】:

      • 我想返回不重复的值 例如:arr= [1,1,1,3,3,3,7,7,7] result = [1,3,7]
      • @Ratan 我已经把食物给你了,现在我应该为你咀嚼它。检查我更新的答案。
      • 对不起,我的朋友,我是编程新手,我花了一些时间来理解新事物:(
      • @RatanServegar 哦,那没关系。但我建议使用 DoXick 答案。使用纯 javascript 代码要简单得多。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 2012-07-14
      • 2020-08-17
      • 1970-01-01
      相关资源
      最近更新 更多