簡體   English   中英

搜索數組JavaScript

[英]Search in array javascript

我有一個json數組:

var arr = 
 [
  {
    "path": "a/b/c/*",
    "id": "1"
  },
  {
    "path": "l/m/*/n",
    "id": "2"
  },
  {
    "path": "a/b/c/d/*",
    "id": "3"
  }
]

我想要與輸入參數匹配的元素的ID,就像我傳遞輸入字符串和數組一樣,我應該獲得ID

foo(input,arr);

所以

var input = 'a/b/c/5'; //or input = 'a/b/c/4';
foo(input,arr) // should return 1

類似地

var input = 'l/m/78/n';
foo(input,arr); // should return 2

類似地

var input = 'a/b/c/d/1';
foo(input,arr); // should return 3

因此,我希望*在搜索時成為通配符。 在實施此功能時,我付出了很多努力,任何幫助將不勝感激。

將每個path轉換為正則表達式 ,請注意,通配符的正則表達式是.*而不是*

根據您更新的問題,並假設通配符應僅與數字匹配,則正則表達式變為[0-9]+

 var arr = [{"path": "a/b/c/*","id": "1"}, {"path": "l/m/*/n","id": "2"}, {"path": "a/b/c/d/*","id": "3"} ]; function foo(input, arr) { var i, RE; for(i = 0 ; i < arr.length ; i++) { //iterate through the array RE = new RegExp(arr[i].path.replace(/\\*/g, '[0-9]+')); //convert path to regexp if(RE.test(input)) { //test for a match return arr[i].id; } } } console.log(foo('a/b/c/5', arr)); console.log(foo('l/m/78/n', arr)); console.log(foo('a/b/c/d/1', arr)); 

 function foo(input,arr){ for(var i in arr){ var re = new RegExp(arr[i].path.replace(/\\*/g, '.*')); if (re.test(input)) { return arr[i].id; } } return null; } var arr = [ { "path": "a/b/c/*", "id": "1" }, { "path": "l/m/*/n", "id": "2" } ]; document.write(foo("l/m/1/n",arr)); 

這是一個正則表達式免費版本:

 var arr = [{ 'path' : 'a/b/c/*', 'id' : '1' }, { 'path' : 'l/m/*/n', 'id' : '2' } ] function search(arr, input) { input = input.split('/'); return arr.filter(function (el) { var value = el.path.replace('*', '').split('/'); var passed = true; for (var i = 0; i < value.length; i++) { if (input[i].length < 1 || value[i].length < 1 || input[i] == value[i]) {} else { passed = false; } } return passed; }) } console.log(search(arr, 'a/b/c/5')); console.log(search(arr, 'l/m/78/n')); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM