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 Hereを作成できます

あなたのプラグイン

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

または、カスタム プラグインを使用して個別の値を 1 つの呼び出しで 1 つの配列にマージする場合は、ここで次の Fiddleを実行できます。

// 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 に答える