javascript - 在数组中搜索 javascript

标签 javascript arrays json regex

我有一个 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

所以我希望 * 在搜索时成为通配符。 我在实现这个过程中遇到了很多困难,任何帮助将不胜感激。

最佳答案

将每个路径转换为regular expression ,请注意通配符的正则表达式是 .* 而不是 *

根据您更新的问题,并假设通配符仅匹配数字,则正则表达式变为 [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));

关于javascript - 在数组中搜索 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38221562/

相关文章:

c - 在C中分配多维数组

javascript - 比较两个复杂的 json (Javascript)

javascript - 在 JavaScript 中使用相同的代码两次

javascript - 将多个对象添加到数组?

c# - Internet Explorer 插件和网站

python - numpy中的加权协方差矩阵

python - 值错误 : No JSON object could be decoded - Django request. 正文

JavaScript 深度复制包含嵌套对象、数组和函数的数组?

javascript - 如何在 Javascript 中减去对象内的小时数

javascript - 使用空对象作为条件 if 循环的参数