如何在jQuery的map函数中添加一个条件?

时间:2017-01-06 09:05:20

标签: javascript php jquery

我试图在jQuery的map函数中添加一个条件。我的问题是我不想在map函数值中使用相同的数字。如果它是相同的我想显示一个警告框。我的地图功能代码如下:

var rankbox= $('input[type=text][class = cate_rank]').map(function() {
  return this.value;
}).get();

如果我得到1,2,3,4,5这样的值就可以,但是如果我得到像1,2,3,2,5这样的值,我想显示一个警告框。有可能吗?

如何在jQuery的map函数中添加一个条件?

function  change_rank() {
  var rankbox= $('input[type=text][class = cate_rank]').map(function() {
    if() {
    } else { }
    return this.value;
  }).get();

4 个答案:

答案 0 :(得分:0)

var vals = []
$('input[type=text][class = cate_rank]').each(function(){
    if($(this).val() && (typeof vals[$(this).val()] == 'undefined')){
        vals[$(this).val()] = 1;
        var last_val = $(this).val();
    }else if($(this).val() && (typeof last_val != 'undefined')  && parseInt(last_val) > parseInt($(this).val())){
        alert('Whooah! Something went terribly wrong! Inputs don\'t have values ordered incrementally!');
    }else{
        alert('Whooah! Something went wrong! We got two inputes with same value!');
    }
});

答案 1 :(得分:0)

检查一下,

var rankbox= $(".test").map(function() {
  return this.value;
}).get();

var sorted_arr = rankbox.slice().sort(); 

var results = [];
for (var i = 0; i < rankbox.length - 1; i++) {
    if (sorted_arr[i + 1] == sorted_arr[i]) {
        results.push(sorted_arr[i]);
    }
}
var rankbox= $(".test").map(function() {
  if($.inArray(this.value, results) > -1){
  alert(this.value+" is duplicate");
  }
  return this.value;
}).get();

我参考了这个link

答案 2 :(得分:0)

如果您要查看dup,可以试试这个:

var x=[1,2,3,2,5]
var has=!x.every(function(v,i) {
	  return x.indexOf(v) == i;
	});

	console.log(has);//true means dup found else not found.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 3 :(得分:0)

您可以尝试使用对象。检查一下:

function  change_rank() {
  var temp = {};
  var rankbox= $('input[type=text][class = cate_rank]').map(function() {
    if(temp[this.value]==undefined) {
      temp[this.value] = this.value;
    } else {
      alert('the same value');
    }
    return this.value;
}).get();