Конвертировать массив в объект с особым случаем - PullRequest
0 голосов
/ 26 января 2020

как я могу превратить этот массив в объект, как показано ниже

 let arr = ["key1:value1","key2,value2"]

в

{
    "key1":"value1",
    "key2":"value2"
}

Ответы [ 3 ]

4 голосов
/ 26 января 2020

Разделите двоеточиями или запятыми, затем перейдите к Object.fromEntries:

const arr = ["key1:value1","key2,value2"];
const obj = Object.fromEntries(
  arr.map(str => str.split(/[:,]/))
);
console.log(obj);
1 голос
/ 26 января 2020

Вы можете попробовать с reduce()

let arr = ["key1:value1","key2,value2"];
var res = arr.reduce((a,c) => {
  var k = c.split(/[:,]/)[0];
  var v = c.split(/[:,]/)[1];
  a[k] = v;
  return a
},{});

console.log(res);
1 голос
/ 26 января 2020

Попробуйте использовать уменьшить :

const arr = ["key1:value1","key2,value2"];
const object = arr.reduce((obj, item) => {
    const colon = item.split(':');
    if (colon.length === 2) {
        obj[colon[0]] = colon[1];

        return obj;
    }

    const comma = item.split(',');
    if (comma.length === 2) {
        obj[comma[0]] = comma[1];

        return obj;
    }

    return obj;
}, {});

или forEach

const arr = ["key1:value1","key2,value2"];
const object = {};
arr.forEach(item => {
    const colon = item.split(':');
    if (colon.length === 2) {
        obj[colon[0]] = colon[1];
    }

    const comma = item.split(',');
    if (comma.length === 2) {
        obj[comma[0]] = comma[1];
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...