Как подготовить список пар вложенных значений ключей в JavaScript - PullRequest
0 голосов
/ 10 мая 2018

У меня есть данные в таких строках, как

1. {type:"pant", service:"normal", price:"30"}
2. {type:"pant", service:"premium 1", price:"50"}
3. {type:"pant", service:"premium 2", price:"70"}
4. {type:"pant", service:"premium 3", price:"100"}

Ищете что-то вроде

var x = {"pant", [{service:"normal", price:"30"},{service:"premium 1", price:"50"} ,{service:"premium 2", price:"70"}, {service:"premium 3", price:"100"}]}

чтобы я мог получить все виды услуг и их стоимость, выполнив x ['pant']

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Если вы хотите использовать type в качестве ключа объекта и значения являются массивами service и price, вы можете использовать reduce

let arr = [{type:"pant", service:"normal", price:"30"},{type:"pant", service:"premium 1", price:"50"},{type:"pant", service:"premium 2", price:"70"},{type:"pant", service:"premium 3", price:"100"}];

let result = arr.reduce((c, {type,...r}) => {
  c[type] = c[type] || [];
  c[type].push(r);
  return c;
}, {});

console.log(result);
0 голосов
/ 10 мая 2018

Используйте функцию массива и создайте ключ по имени pant. Проверьте, существует ли ключ, затем нажмите service и price

Также ожидаемый объект недействителен. Ключ объекта разделяется двоеточием (:) в этом формате

obj = {
  key:value
}

var data = [{
  type: "pant",
  service: "normal",
  price: "30"
}, {
  type: "pant",
  service: "premium 1",
  price: "50"
}, {
  type: "pant",
  service: "premium 2",
  price: "70"
}, {
  type: "pant",
  service: "premium 3",
  price: "100"
}]

var x = data.reduce(function(acc, curr, currIndex) {
  if (!acc[curr.type]) {
    acc[curr.type] = []
  }

  acc[curr.type].push({
    service: curr.service,
    price: curr.price
  })

  return acc;


}, {});

console.log(x)
...