Как добавить новую пару ключ / значение в объект JSON? - PullRequest
1 голос
/ 18 июня 2019

У меня есть функция JS, которая должна добавить пару ключ-значение в объект JSON.

Когда ключ уже существует, он должен добавить значение к существующему ключу (вложенные объекты JSON).В противном случае он должен создать ключ со значением.

В данный момент иногда он возвращает значение true для метода .hasOwnProperty (key), даже если этот ключ не существует.

var myObject= '{}';

function add(key,value){

   if(myObject.hasOwnProperty(key)){
        var length = Object.keys(myObject[key]).length;

       var obj =JSON.parse(myObject);
        obj[key] = {};
        obj[key][length]= value;
        myObject= JSON.stringify(obj); 
    }
    else{ 
        var obj =JSON.parse(myObject);
        obj[key] = {};
        obj[key]["0"] = value;
        myObject= JSON.stringify(obj);
    }
}

Каким должен быть объект JSON

myObject = {
    "50": {
         "0": "value1",
         "1": "value2", 
         },
    "51": {
         "0": "value3",
         "1": "value4", 
         }
};       

Ответы [ 3 ]

0 голосов
/ 18 июня 2019

Проверка наличия ключа в объекте с помощью оператора «in»

    var car = {make: 'Honda', model: 'Accord', year: 1998};
    
    console.log(car);
    console.log('make in car: ', 'make' in car);
    // expected output: true
    
    delete car.make;
    console.log('removed make');
    console.log(car);
    
    console.log('add make in again, if not there');
    if ('make' in car === false) {
      car.make = 'Suzuki';
    }
    
    console.log('car.make : ', car.make);
    // expected output: "Suzuki"

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in

0 голосов
/ 18 июня 2019

Попробуйте следующий код

var myObject= {};

function add(key,value){

   myObject.hasOwnProperty(key) ?  myObject[key][Object.keys(myObject[key]).length]= value : myObject[key] = {"0": value};
   
}

add(50, "Hello")
add(50, "World")
add(51, "World")

console.log(myObject)
0 голосов
/ 18 июня 2019

Попробуйте это:

const addEntry = (myObject, key, value) => ({ ...myObject, [key]: value });

console.log(addEntry({}, "hi", 5)); // { "hi": 5 }
console.log(addEntry({ key: 5 }, "hi", 5)); // { "key": 5, "hi": 5 }
console.log(addEntry({ key: 5 }, "key", 2)); // { "key": 2 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...