#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. Есть ошибка, пожалуйста, попробуйте ее решить и пересмотрите свой ответ !