[英]JavaScript comparing two arrays
我有辦法在JavaScript中比較兩個數組嗎?
這是我的例子。
array1 = ['jpg','png'];
array 2 = ['jpg','pdf','png','bmp'];
我的情況下,我是否需要array2的所有元素都返回TRUE,或其他。 如果只有數組1中的一個元素匹配,數組2中的元素將返回FALSE。 命令其不重要。 基本上,這是對上傳文件的驗證,如果兩個文件的擴展名不正確,我會嘗試刪除按鈕。
我嘗試函數inarray,但我認為它僅適用於字符串而不適用於array
如果遺留問題不成問題,則可以執行以下操作:
var array1 = ['jpg','png','d'];
var array2 = ['jpg','pdf','png','bmp'];
var result = !array1.filter(function(a) { return array2.indexOf(a)==-1; }).length;
// result is False
如果
array1
所有元素都是array2
一部分,則返回TRUE
只有array1
一個元素匹配,array2
元素返回FALSE
您可以通過兩種方式考慮這一點,
false
這是使用循環的示例
var a = [1, 3],
b = [1, 5],
c = [0, 1, 2, 3, 4];
function test(needles, haystack) {
var i;
for (i = 0; i < needles.length; ++i) {
if (haystack.indexOf(needles[i]) === -1) {
return false;
}
}
return true;
}
test(a, c); // true
test(b, c); // false
如果使用第一個數組的值過濾第二個數組的結果是長度等於第一個數組的長度的數組,則第一個數組是第二個數組的子集。 您可以為此編寫一個函數,或者為Array.prototype
附加一個方法:
var array1 = ['jpg', 'png']; var array2 = ['jpg', 'pdf', 'png', 'bmp']; var array3 = ['jpg', 'bmp', 'pdf']; Helpers.log2Screen('array1 subset of array2? ', isSubset(array1, array2) ? 'yes' : 'no' ); // assign and use Array.prototype.subsetOf Array.prototype.subsetOf = isSubsetProto; Helpers.log2Screen('array1 subset of array3? ', array1.subsetOf(array3) ? 'yes' : 'no' ); function isSubset(arr1, arr2) { return arr2.filter( function (v) {return arr1.indexOf(v) > -1; } ).length == arr1.length; } function isSubsetProto(arr) { return arr.filter( function (v) {return this.indexOf(v) > -1; }, this ).length == this.length; }
<script src="http://kooiinc.github.io/JSHelpers/Helpers-min.js"></script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.