【发布时间】:2026-01-06 00:30:01
【问题描述】:
基本上我要做的是在我的数组中搜索一个字符串
这曾经是我的代码:
var arr1 = ['23456', '34567', '45678', '56789', '6789T', '789TJ', '89TJQ', '9TJQK', 'TJQKA'];
var arr2 = ['98TJQ'];
var arr3 = ['89TJQ'];
if (!('containsU' in Array.prototype))
Array.prototype.containsU = function(arr, startIndex) {
for (i in arr) {
if (arr.hasOwnProperty(i) && ''.indexOf.call(this, arr[i], startIndex) === -1) return false;
}
return true;
};
if (!('containsArrayU' in Array.prototype)) //contains array unordered
Array.prototype.containsArrayU = function(arr, startIndex) {
for (i in this) {
if (this.hasOwnProperty(i) && arr.containsU(this[i])) return true;
}
return false;
};
我正在寻找属于 arr2 或 arr3 一部分的 arr1 的任何元素,例如:
arr1 = ['222','333','444','555','666','777','888','999','TTT','JJJ','QQQ','KKK','AAA'];
arr2 = ['9229'];
arr3 = ['9299'];
alert(arr2.containsArrayU(arr1)); //this should be false
alert(arr3.containsArrayU(arr1)); //this should be true (contains '999')
【问题讨论】:
-
你为什么在数组上使用
hasownProperty? -
不清楚你要做什么
-
您的代码中有很多奇怪之处。
containsArrayU函数迭代字符串数组并将字符串传递给containsU,然后containsU使用for-in迭代字符串的字符,并通过转换来检查该字符是否在数组中通过String.prototype.indexOf将数组转换为字符串? -
...所以基本上你的代码会检查搜索字符串中的任何字符是否存在于数组中字符串的任何字符中。
-
OK...所以如果 arr1 中任何元素的所有字符串字符都在 arr2 或 arr3 内(以作为参数传递的为准)?
标签: javascript arrays contains