Добавление нового элемента данных массива в JSON

У меня есть динамический объект данных Json.

[{"stock1":"aaaa","stock2":"bbbb"},{"stock1":"aaaa","stock2":"bbbb"},{"stock1":"aaaa","stock2":"bbbb"}]

и мне нужно ввести некоторые данные.

"identifier" : "userid"

затем я пытаюсь написать такой код.

Data.push({"identifier" : "userid"});

и результат был

[{"stock1":"aaaa","stock2":"bbbb"},{"stock1":"aaaa","stock2":"bbbb"},{"stock1":"aaaa","stock2":"bbbb"},{"identifier" : "userid"}]

но моя цель

[{"stock1":"aaaa","stock2":"bbbb","identifier" : "userid"},{"stock1":"aaaa","stock2":"bbbb","identifier" : "userid"},{"stock1":"aaaa","stock2":"bbbb","identifier" : "userid"}]

как я могу поместить некоторые данные в специальный индекс в существующих данных json?

JSON - всегда строка. Если у вас есть массив, это не JSON.
Nina Scholz 12.05.2018 19:45
for(obj in Data){Data.obj.push()} ??
Romeo Sierra 12.05.2018 19:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
70
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Чтобы обновить / добавить к существующим объектам массива, вы можете сделать простой цикл для каждого.

Фрагмент стека

var array = [{"stock1":"aaaa","stock2":"bbbb"},{"stock1":"aaaa","stock2":"bbbb"},{"stock1":"aaaa","stock2":"bbbb"}]

array.forEach(function(item) {
  item["identifier"] = "userid";
})

console.info(array)

Использование функции reduce для добавления каждого элемента с новой парой ключ-значение

var arr = [{"stock1":"aaaa","stock2":"bbbb"},{"stock1":"aaaa","stock2":"bbbb"},{"stock1":"aaaa","stock2":"bbbb"}]

var result = arr.reduce((r,s) => {
  r.push(Object.assign({}, s, {"identifier" : "userid"}));
  return r;
} , []);
console.info(result);

Я думаю, что map () идеально подходит для этого:

var arr = [
{"stock1":"aaaa","stock2":"bbbb"},
{"stock1":"aaaa","stock2":"bbbb"},
{"stock1":"aaaa","stock2":"bbbb"}]

arr.map(function(x){
x.identifier = "userid"
})

console.info(arr)

Попробуй это. Используйте Object.keys, чтобы перебирать существующие данные массива и назначать новые данные каждому уровню с помощью Object.assign:

var Data = [{"stock1":"aaaa","stock2":"bbbb"},{"stock1":"aaaa","stock2":"bbbb"},{"stock1":"aaaa","stock2":"bbbb"}];

Data = Object.keys(Data).map(function (i) {
    return Object.assign({}, Data[i], {identifier: 1});
});
console.info(Data);

Вот несколько документов, объясняющих использование Object.assign: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

вам нужно нажать на элемент массива, а не на сам массив: поэтому вам нужно выполнить цикл для этого JSONArray, а затем для каждого элемента вставить новые переменные, например:

    for(int x-0; x<Data.length; x++){
       Data[x].push({"identifier" : "userid"})
    }

Скажем, изначально ваш массив - initArray. Вы можете сделать это с помощью карта или для каждого С forEach вы получите внести изменения в initArray, а с картой вы будете обрабатывать initArray, которая вернет новый массив.

Так,

initArray.forEach( function (element)

 { 

element["identifier"] = "userId" 

})

var  newArray = initArray.map(

           function (element) {  

               element["identifier"] = "userId"  

                return element 

            })

Другие вопросы по теме