Reputation: 2636
I would like to know how to match a string against an array, and replace the string value.
I'm getting a pageTitle from the _viewID, this needs to be changed to the better looking name from the array.
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
Upvotes: 1
Views: 68
Reputation: 1389
A better option would be to change the format of your pageTitle variable. Instead of containing array of arrays, just use objects
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);
But if you are not able to do that, and you can't change the format
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);
Upvotes: 0
Reputation: 6221
If you are stuck with array of arrays then this snippet could do:
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);
Upvotes: 0
Reputation: 281854
A better approach will be to use pageTitle
as an object rather than an array like
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);
Upvotes: 5