Javascript: пары ключ-значение объекта

#javascript #arrays #object #key-value

Вопрос:

Я пытаюсь получить результат, подобный:-

 [{"option_id":1,"name":"small"},{"option_id":1,"name":"medium"}]
 

Ниже приведен мой фрагмент, как вы можете видеть в консоли.в журнале отображается только один объект вместо двух. Это почему? :/

 const myObject = {
  "'1'": "small",
  "'1'": "medium"
};

var item = [];

Object.entries(myObject).forEach(([k, v]) => {
  item.push({
    name: v,
    option_id: k
  });

  console.log(item);
}) 

Комментарии:

1. поскольку у вашего объекта есть дубликаты ключей, первая пара будет перезаписана

2. но вот как выглядит мой вывод json, есть ли для этого какие-нибудь способы @RameshReddy?

3. Если ваш JSON выглядит так (с дубликатами ключей), то вам следует обработать его как строку и самостоятельно проанализировать каждый элемент. Как только у вас появится объект, дубликаты ключей будут удалены.

Ответ №1:

Используемый вами метод просто переопределяет созданные вами дубликаты ключей … чтобы предотвратить эту ситуацию, не используйте ключи объектов ! вы можете полагаться на массивы, передающие нужные вам данные

См. Пример =>

 const myObject = {
  // number : [name , option]
  0: ["small", 1],
  1: ["medium", 1]
};

let item = [];

Object.entries(myObject).forEach(obj => {
  item.push({
    name: obj[1][0],
    option_id: obj[1][1]
  });
})

console.log(item);
 

Лучший способ использовать методы массива

 let  myObject = [
  ["small", 1],
  ["medium", 1]
];

myObject = myObject.map(obj => {
  return {
    name: obj[0], option_id: obj[1]};
});

console.log(myObject);
 

Комментарии:

1. @cdogol Попробуй это, я думаю, это тебе точно поможет !

2. Эй, @Sanmeet, спасибо за вашу помощь! Я понял идею из ваших ответов 😉

Ответ №2:

Один из вариантов-создать строку в формате JSON, а затем использовать библиотеки JSON для работы со строкой.

 const myObject = {
  1: "small",
  1: "medium"
};

var item = [];

Object.entries(myObject).forEach(([k, v]) => {
  item.push('{"name":"'   v   '", "option_id":"'   k   '"}');
})
console.log(JSON.stringify(JSON.parse('['   item.join(",")   ']')));
 

Комментарии:

1. Привет @HeathSmith, я попробовал ваш код на скрипке, но там написано ошибка сценария.

2. Есть ошибка, пожалуйста, попробуйте ее решить и пересмотрите свой ответ !