0

我编写了一些代码来检查数组是否存在,如果不存在,则创建一个名为 window.list

然后它检查数组是否包含 2 或 3 值,如果没有,则将它们添加到列表中。

如果它们已经在列表中,它会输出“值已经在列表中!” 然后突破功能。

当我执行代码时,它只识别检查 2 值的 inArray 的第一个子句。3 不起作用。我希望能够在未来添加更多价值。我不确定这是编写此查询的最有效方法。

if (typeof window.list == "undefined" || !(window.list instanceof Array)) {
    window.list = new Array;
}

if ($.inArray(2, window.list) == -1 || $.inArray(3, window.list) == -1) {
    window.list.push(presentationId);
} else {
    console.log("Value is already in the list!")
    return;
}
4

2 回答 2

2

如果presentationID 是2 或3,为什么不试试这样的代码:

...
if ($.inArray(presentationID, window.list) == -1) {
    window.list.push(presentationId);
} else {
...
于 2013-03-04T13:09:08.893 回答
1

您可以合并数组并使用 jQuery 仅保留唯一值

window.list = [2,3];

window.list = $.merge(window.list, [2,3,7,2,60]);
window.list = $.unique(window.list);

//OUTPUT: window.list = [2,3,7,60];

在这里提琴


或者,如果您想根据数组检查数组并对找到/未找到的实例进行操作。你可以在这里制作一个简单的插件Fiddle

你的插件

(function ($) {
  $.fn.Contains = function(value, success, failure) {
      var arr = this;
      if(value instanceof Array){
          $(value).each(function(i,item){
              var found = $.inArray(item, arr) > -1;
              if (found){
                  success(item);
              } else {
                  failure(item);
              }
        });
      }
  };
})(jQuery);

然后这样称呼它:

window.list = [2,3];

$(window.list).Contains([2, 3, 6, 7], function(foundValue){
    // Handle the foundValue here
    alert('found: ' + foundValue);
}, function(missingValue){
    // Handle the missingValue here
    alert('missing: ' + missingValue);
});

或者,如果您想使用自定义插件通过一次调用将不同的值合并到一个数组,您可以在此处执行以下小提琴

// Your plugin to merge the distinct values
(function ($) {
  $.fn.MergeDistinct = function(value) {
      var arr = this;
      if(value instanceof Array){
          $(value).each(function(i,item){
              var found = $.inArray(item, arr) > -1;
              if (!found) arr.push(item);
        });
      }
      return arr;
  };
})(jQuery);

// Your list of items
window.list = [2,3];

// Merge the new values without creating duplicates
window.list = $(window.list).MergeDistinct([2, 3, 6, 7]);

//OUTPUT: window.list = [2,3,6,7];
于 2013-03-04T13:40:23.433 回答