【问题标题】:JS: How to store values in an array in a loop(each) and compare this?JS:如何在循环(每个)中将值存储在数组中并进行比较?
【发布时间】:2012-01-06 14:36:22
【问题描述】:

我正在开发一个小插件,它检查几个输入是否具有相同的值。我认为最好的方法是将值存储在数组中并检查值是否唯一,或者有更好的方法吗?

// 想法

$('input').each(function(){
   var type = $(this).attr('class');//can be a other attribute
   switch(type){
      case: 'red':
      // some code
      break;

      case: 'green':
      // some code
      break;

      case: 'black':
      // the code to see if all inputs with the class black 
      //if they have the same value return in true or false, if all of the values
      // are empty it should return false
      break;

      // more cases....
   };
});

【问题讨论】:

  • 如果您想检查输入的,为什么您的代码会查看“类”属性?等一下;你想按类检查相似的值......嗯,这将是一件非常脆弱的事情,因为一个元素可以有多个“类”值;或者,更准确地说,“类”在语义上是一个值的列表
  • “真假返回”是什么意思?
  • 这些输入可以返回什么数据类型?
  • 另外 - 为什么将类存储在数组中你不只是想知道它们是否都相同?只需将第一个元素类分配给一个变量并将其与其他元素类进行比较..,
  • 这个类只是一个想法,我将使用 html5 数据属性。 false 的返回是,如果都相同,则应返回 true,否则返回 false。数据类型?不,我不想存储类,而是具有相同类的输入的值。

标签: javascript jquery arrays loops match


【解决方案1】:

我会为它使用一个对象:

var values = {};
var dupFound = false;
$(...).each(function() {
    var value = $(this).val();
    if(values[value]) {
        dupFound = true;
    }
    else {
        values[value] = this;
    }
});

这样做的好处是您可以轻松访问包含该值的其他元素。

【讨论】:

    【解决方案2】:
    function checkMatchingValues(cssClass) {
        var value, matching = true;
        $('input#' + cssClass).each(function() {
            if(value == undefined) {value = this.val(); return}
            if(value != this.var()) {matching = false; return}
        }
        return matching;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-02
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 2017-02-18
      • 1970-01-01
      • 2015-03-27
      相关资源
      最近更新 更多