我编写了一些代码来检查是否存在数组,如果没有,则创建一个名为window.list
的代码然后检查数组是否包含2或3值,如果没有,则将它们添加到列表中。
如果它们在列表中已经输出“值已经在列表中!”然后突破了这个功能。
当我执行代码时,它只识别inArray的第一个检查2值的子句。 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;
}
答案 0 :(得分:2)
如果presentationID为2或3,为什么不尝试这样的代码:
...
if ($.inArray(presentationID, window.list) == -1) {
window.list.push(presentationId);
} else {
...
答案 1 :(得分: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);
});
或者,如果您想使用自定义插件通过一次调用将不同的值合并到一个数组,则可以执行以下操作Fiddle here:
// 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];