2
我想要查找某個元素(可能是字符串或數字)是否在數組中。該陣列是test
,元素是value
。到目前爲止好,我有這樣的代碼:toString()爲JavaScript中的數組的每個元素
function compare(value, test) {
// We need to stringify all the values to compare them with a string
return test.map(function(value){
return value.toString();
}).indexOf(value) > -1;
}
alert(compare("2", [1, 2, 3]));
alert(compare("2", ["1", "2", "3"]));
It does work。但由於indexOf()
uses strict equality這不符合我的需求,所以看起來很複雜。一個哈克方式將做以下,這也適用:
return test.join("|").split("|").indexOf(value) > -1;
但是它是簡單的看,如果測試是["a", "b|c", "d"]
那麼我們有一個問題,因爲我們會被比較a
,b
,c
& d
而不是a
,b|c
, d
。找到安全字符也不是一種選擇,所以此解決方案無效。 有沒有更簡單的方法做indexOf()
與正常相等?
編輯:我第一次嘗試這樣做,它出人意料地返回false從嚴格的平等,這就是爲什麼我做了它的複雜的方式:
["1", "2", "3"].indexOf(2);
你'compare'功能看起來好像沒什麼問題,而不是在所有的複雜,我不明白你爲什麼會需要去改變它? – adeneo
'arr.map(String).indexOf(「3」);'在原始文件(: –