繁体   English   中英

将字符串与数组匹配并替换

[英]Match string against array and replace

我想知道如何将字符串与数组匹配,并替换字符串值。

我从_viewID获取pageTitle,需要将其从数组更改为外观更好的名称。

var pageTitle = [
  ["ticket_dynamic", "Dynamic ticket page"],
  ["ticket_regular", "Regular ticket page"],
  ["cart_regular", "Regular cart page"]
];
var _viewID = _viewID || [];
//_viewID = ticket_dynamic 
// _viewID needs to be Dynamic ticket page

更好的方法是将pageTitle用作对象,而不是像这样的数组

 var pageTitle = { "ticket_dynamic": "Dynamic ticket page", "ticket_regular": "Regular ticket page", "cart_regular": "Regular cart page" } var _viewID = "ticket_dynamic"; var viewId = pageTitle[_viewID]; console.log(viewId); 

如果您坚持使用数组数组,那么此代码片段可以做到:

var pageTitle = [
  ["ticket_dynamic", "Dynamic ticket page"],
  ["ticket_regular", "Regular ticket page"],
  ["cart_regular", "Regular cart page"]
];
var _viewID = "cart_regular";

var match = pageTitle.find((current) => current[0] == _viewID);
_viewID = match ? match[1] : "";
console.log(_viewID);

更好的选择是更改pageTitle变量的格式。 而不是包含数组的数组,而是使用对象

var pageTitle = {
    "ticket_dynamic": "Dynamic ticket page",
    "ticket_regular": "Regular ticket page",
    "cart_regular": "Regular cart page",
};

var _viewID = "ticket_dynamic";
// same as writing pageTitle.ticket_dynamic, or pageTitle["ticket_dynamic"]
// but using the variable
_viewID = pageTitle[_viewID];

// outputs "Dynamic ticket page"
console.log(_viewID);

但是,如果您无法执行此操作,并且无法更改格式

var pageTitle = [
    ["ticket_dynamic", "Dynamic ticket page"],
    ["ticket_regular", "Regular ticket page"],
    ["cart_regular", "Regular cart page"]
];

var _viewID = "ticket_dynamic";

for (var i = 0; i < pageTitle.length; i++) {
    var keyValue = pageTitle[i]; // the array containing your key and value

    // the first element [0] will be the key
    if (keyValue[0] == _viewID) {
         _viewID = keyValue[1];
         break;
    }

    if (i + 1 == pageTitle.length) {
        // if last iteration occured, the matching key pair was not found
        // so mark _viewID as false so you know that the match was not found
        _viewID = false;
    }
}

if (_viewID) console.log(_viewID);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM