我在搜索數組時遇到問題。我想檢查,如果某些字符串 的元素之一,例如存在查找數組中的某些字符串(Javascript)
陣:
["4_1", "4_2", "4_3"]
我將檢查字符串「4」中的一個變量存在。
謝謝!
我在搜索數組時遇到問題。我想檢查,如果某些字符串 的元素之一,例如存在查找數組中的某些字符串(Javascript)
陣:
["4_1", "4_2", "4_3"]
我將檢查字符串「4」中的一個變量存在。
謝謝!
最簡單的方法是使用Array.prototype.join
& & indexOf
方法
["4_1", "4_2", "4_3"].join("").indexOf("4")
更新
根據@ t.niese的評論,這個答案可能會導致錯誤的結果,例如,如果你正在尋找14
它將返回2
- 什麼是錯的,因爲你的數組不包含在14
開始的元素。在這種情況下,最好使用@妮娜的答案,或者你可以以其他方式加入 ["4_1", "4_2", "4_3"].join(" ").indexOf("14") // -1
對於較大的數組,性能可能不是最好的,並且如果OP決定使用多於char的字符串作爲'needle',則會出現問題,因爲它會給出'[「4_1 「,」4_2「,」4_3「]。join(」「)。indexOf(」14「)'。 –
對於所有'.join',都可以找到失敗案例:'[「4_1」,「4_2」,「4_3」]。join(separator).indexOf(「1」+ separator +「4」)'will顯示結果。如果OP真的只查找數字,那麼它將起作用。但是因爲這個問題本身只是一個通用的'[...]我想檢查某個字符串是否存在於某個元素中,那麼在這種情況下'.join'永遠不會是一個好的解決方案。 –
實際上,你可以做一個循環,並檢查indexOf
是不是-1
:
["4_1", "4_2", "4_3"].forEach(function (element, index, array) {
if (element.indexOf(4) != -1)
alert("Found in the element #" + index + ", at position " + element.indexOf(4));
});
你可以使用一個循環吧。
var arr = ["4_1", "4_2", "4_3"];
search = RegExp(4),
result = arr.some(search.test.bind(search));
document.write(result);
我並不完全瞭解代碼複雜性的必要性。爲什麼不區分大小寫和爲什麼綁定? – mplungjan
'some'真的很好。是的,爲什麼不區分大小寫? –
@PraveenKumar,它是爲將來的參考...;) –
'STRING.indexOf(needle)'in a loop? – Rayon