Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查JS中检查条件的对象数组_Javascript_Arrays - Fatal编程技术网

Javascript 检查JS中检查条件的对象数组

Javascript 检查JS中检查条件的对象数组,javascript,arrays,Javascript,Arrays,将对象数组检查到检查条件。条件为 对象数组最初为空 1.若数组为空,则在发生操作时,将对象添加到数组中 2.如果数组有对象,请检查该对象是否已存在。如果找到,请从数组中删除该对象,否则添加到数组中 我尝试了下面的代码 var arr = []; $(document).ready(function() { $(".rating").click(function() { var idx = $(this).closest('td').index(

将对象数组检查到检查条件。条件为 对象数组最初为空

1.若数组为空,则在发生操作时,将对象添加到数组中

2.如果数组有对象,请检查该对象是否已存在。如果找到,请从数组中删除该对象,否则添加到数组中

我尝试了下面的代码

  var arr = [];
    $(document).ready(function() {
        $(".rating").click(function() {
            var idx = $(this).closest('td').index();

            var userskill = {
                tech : $(this).closest('td').siblings('td.tech').text(),
                skill : $('#listTable thead th').eq(idx).text(),
                rValue : $(this).val()

            }
            add(userskill);
        });

    });

function add(userskill) {
    var flag = false;
    arr.push(userskill);
    for(var i in arr){
        if((arr[i].tech==userskill.tech)&&(arr[i].skill==userskill.skill)){
            arr.splice(i, 1);
        }

    }
我想你的问题可能会很有趣。例如,该方法允许对象比较

编辑:

使用u.findWhere进行编码:

function add(userskill) {
  if(!_.findWhere(arr, userskill)) {
      arr.push(userskill);
  }
}

正如我所理解的,如果allready中没有包含相等的对象,则需要将对象“userskill”添加到“arr”中。因此,您可以使用_findWhere方法。如果在列表中找不到相等的对象,则返回false。代码看起来像上面的编辑。上面的代码不起作用。它总是将对象添加到数组中。即使它们相等。。