javascript - JS从右到左匹配字符串

标签 javascript

假设我有以下对象:

const obj = {
  'myApi': ['keyOne', 'keyTwo'],
  'myApi.keyOne': ['three', 'four'],
  'myApi.keyTwo': [...],
  'myApi.keyOne.three': [...]
  'myApi.keyOne.four': [...]
}

现在,基于以下字符串:

const str = "if(myApi.keyOne.three"

我想匹配正确的对象键,但是从从右到左。所以,在上面的例子中,我想得到 obj["myApi.keyOne.three"] .

indexOfstr.test方法将不起作用,因为它们会捕获 myApimyApi.keyOne还有。

请注意,它可以是任何字符串,即 str这只是一个例子。例如:

while(myApi.keyOne.three) {} // should match obj["myApi.keyOne.three"]
if(myApi.keyOne) {} // should match obj["myApi.keyOne"]

等等

我该怎么做?

最佳答案

要获取 key ,请使用正则表达式来匹配 myApi,后跟任意数量的重复组(句点后跟单词字符)。然后,您可以访问对象上适当的键:

const obj = {
  'myApi': ['keyOne', 'keyTwo'],
  'myApi.keyOne': ['three', 'four'],
  'myApi.keyOne.three': ['foobar']
};

function getVal(str) {
  const key = str.match(/myApi(?:\.\w+)*/)[0];
  console.log(obj[key]);
  return obj[key];
}
getVal("if(myApi.keyOne.three");
getVal("while(myApi.keyOne.three) {}");
getVal("if(myApi.keyOne) {}");

关于javascript - JS从右到左匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52922510/

相关文章:

javascript - Mongoose 的奇怪错误

javascript - 使用 css 或 javascript 设置输入类型

javascript - 使用自动提交过帐值不起作用

javascript - cordova windows 8应用程序blob url到ms-appdata url

javascript - Native Base如何获取List dataArray的ListItem索引?

javascript - Firebug 控制台

javascript - 支持 IE8 的 React 拖放

Javascript 确认弹出窗口

javascript - jQuery 日期选择器 minDate 变量

javascript - 通过将 id 从 javascript 发送到 php 页面来删除所选行