копировать из одного объекта, менять ключи, но сохранять те же значения - PullRequest
1 голос
/ 30 сентября 2019

Привет. Я хочу скопировать объект JavaScript, который находится во внешнем файле json. Это выглядит так:

и через код я хочу изменить ключи каждого массива без изменения его значений. Значения для последнего ключа должны быть массивом, а не просто vales

{ "items": [
  { "namezz": "Bike", "price": 100 },
  { "namezz": "TV", "price": 700 },
  { "namezz": "Album", "price": 10 },
  { "namezz": "Book", "price": 5 },
  { "namezz": "Phone", "price": 500 },
  { "namezz": "Computer", "price": 1000 },
  { "namezz": "Keyboard", "price": 25 }
]
}

Это должно выглядеть так:

[
  { "name": "Bike", "data": [100] },
  { "name": "TV", "data": [700] },
  { "name": "Album", "data": [10] },
  { "name": "Book", "data": [5] },
  { "name": "Phone", "data": [500] },
  { "name": "Computer", "data": [1000] },
  { "name": "Keyboard", "data": [25] }
]

код, который я пробовал:

 const itemNames =  simple.map((xxx) => {

        return ("name" + xxx.namezz + "data: [" + xxx.price + "]")
    })

Ответы [ 2 ]

4 голосов
/ 30 сентября 2019

Вы на правильном пути с методом map(). То, как вы использовали map(), приведет к массиву строк. Вот пример использования map() для получения запрошенного результата (новый массив объектов).

const myObject = {
  "items": [{
      "namezz": "Bike",
      "price": 100
    },
    {
      "namezz": "TV",
      "price": 700
    },
    {
      "namezz": "Album",
      "price": 10
    },
    {
      "namezz": "Book",
      "price": 5
    },
    {
      "namezz": "Phone",
      "price": 500
    },
    {
      "namezz": "Computer",
      "price": 1000
    },
    {
      "namezz": "Keyboard",
      "price": 25
    }
  ]
};

const result = myObject.items.map(x => ({ name: x.namezz, data: [x.price] }));

console.log(result);
2 голосов
/ 30 сентября 2019

Проблемой с вашим кодом является возвращение строки, в то время как вам нужен объект, то есть

return { name:xxx.namezz , data: [xxx.price] }

В качестве альтернативы вы можете использовать map и destructuring

let obj = { "items": [{ "namezz": "Bike", "price": 100 },{ "namezz": "TV", "price": 700 },{ "namezz": "Album", "price": 10 },{ "namezz": "Book", "price": 5 },{ "namezz": "Phone", "price": 500 },{ "namezz": "Computer", "price": 1000 },{ "namezz": "Keyboard", "price": 25 }]}

let final = obj.items.map(({ price, namezz }) => ({ namezz, data: [price] }))

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