Как назначить значения массива в объект в качестве ключевых значений в JavaScript - PullRequest
0 голосов
/ 12 июня 2019

Я получаю запрос в следующей форме:

req = {
"id": ["1","2"],
"values": ["fruit", "vegies"]
}

Я хочу отправить ответ в следующем виде:

res = {
"idMap": {
    "1": ["fruit", "veggies"],
    "2": ["fruit", "veggies"]
}
}

Я попытался использовать функцию карты, но значения отображаются как [Массив] , а не как ["фрукты", "овощи"] .Я прилагаю код ниже:

const values = req.values
const id = req.id.map((ids) => {
    const idmap = {
        [ids]: values
    }
    return idmap;
});
req = {
    "idMap": id
}

помогите мне с этим, ребята.Заранее спасибо ..

Ответы [ 2 ]

2 голосов
/ 12 июня 2019

Вы должны использовать reduce для создания объекта - map возвращает массив.

const req = {
  "id": ["1", "2"],
  "values": ["fruit", "vegies"]
};

const res = {
  idMap: req.id.reduce((a, c, i) => (a[c] = [...req.values], a), {})
};

console.log(res);
.as-console-wrapper { max-height: 100% !important; top: auto; }

Вы также можете перебрать массив и назначить свойства объекта результата:

const req = {
  "id": ["1", "2"],
  "values": ["fruit", "vegies"]
};

let res = {
  idMap: {}
};

let values = req.values;
req.id.forEach((id, index) => res.idMap[id] = [...values]);

console.log(res);
.as-console-wrapper { max-height: 100% !important; top: auto; }
0 голосов
/ 12 июня 2019

Вы можете сгенерировать объект из сопоставленных записей с помощью (предстоящих) Object.fromEntries.

var req = { id: ["1", "2"], values: ["fruit", "vegies"] },
    res = { idMap: Object.fromEntries(req.id.map(k => [k, req.values])) };

console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...