Разделить URL с / и заменить данные с помощью JavaScript - PullRequest
0 голосов
/ 08 июля 2019

Я хотел бы знать, как разделить URL-адрес и заменить его данными объекта, используя JavaScript.У меня есть URL-адрес, подобный этому

www.xyz.com/en/transfer-services/details
www.xyz.com/en/about-info,
www.xyz.com/en/contact,
www.xyz.com/en/all-services-from-mal-to-sin/details

var obj1={
  "transfer-services": "xi-hou-zhi-n",
  "about-info": "zhi-zhu",
  "contact": "zhi-phi",
  "all-services-from": "hui-zhi-phi-tho",
  "to": "zhi"
}

У меня есть кнопка, и при щелчке необходимо изменить URL-адрес www.xyz.com/en/xi-hou-zhi-n/details,change на www.xyz.com / en / Transfer-Services / Details и наоборот.

при нажатии кнопки, если URL-адрес заполнен английским языком, используйте ключи obj1 или значения obj1.

1 Ответ

0 голосов
/ 08 июля 2019

Вы можете использовать reduce.

const urls = [
    "www.xyz.com/en/transfer-services/details",
    "www.xyz.com/en/about-info",
    "www.xyz.com/some/zhi-phi",
    "www.xyz.com/en/all-services-from-mal-to-sin/details"
];

var obj1={
  "transfer-services": "xi-hou-zhi-n",
  "about-info": "zhi-zhu",
  "contact": "zhi-phi",
  "all-services-from": "hui-zhi-phi-tho",
  "to": "zhi",
    "to": "zhi",
    "sin": "stin",
    "mal": "zmal"
};

const output = urls.reduce((accu, url) => {
    let [base, lang, segment, ...rest] = url.split('/');

    if(lang == 'en' && obj1.hasOwnProperty(segment)) {
        segment =  obj1[segment] ;
    } else {
        Object.entries(obj1).forEach(([key, val]) => {
            if(val == segment) { segment = key } ;
        });
    }

    accu.push([base,lang, segment, ...rest].join('/'));
    return accu;
}, []);

console.log(output);

--- Редактировать ---

var obj1={
    "transfer-services": "xi-hou-zhi-n",
    "about-info": "zhi-zhu",
    "contact": "zhi-phi",
    "all-services-from": "hui-zhi-phi-tho",
    "to": "zhi",
    "sin": "stin",
    "mal": "zmal"
};

function transformURL(url) {
    let [base, lang, segment, ...rest] = url.split('/');
    if(lang == 'en' && obj1.hasOwnProperty(segment)) {
        segment = obj1[segment];
    } else {
        Object.entries(obj1).forEach(([key, val]) => {
            if(val == segment) {segment = key};
        });
    }

    return [base, lang, segment, ...rest].join('/');
}
console.log(transformURL('www.xyz.com/en/transfer-services/details'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...