Add new object to JSON array

I work with javascript and JSON. I have a JSON object similar to this:

{"firstName":"John", "lastName":"Doe", "id":"1"}

In my case, I have a function like this:

function addNewValues(jsonArray, firstName, lastName, id)

If the "firstName" does not match, I must create a new value in the array.

Of

addNewValues({"firstName":"John", "lastName":"Doe", "id":"1"}, "Jane", 
"Doe", "2"); 

he must return:

[
{"firstName":"John", "lastName":"Doe", "id":"1"},
{"firstName":"Jane", "lastName":"Doe", "id":"2"}
]

How can I add this new position? I tried    myObj.push({"firstName":firstName, "lastName":lastName }); without any success.

Thanks in advance.

+4
source share
8 answers

You can use the method to check if a given array contains an object with this , then click on a new object with these properties. .some()firstName

Here is what your code should look like:

function addNewValues(jsonArray, firstName, lastName, id){
     if(!jsonArray.some(function(obj){
         return obj.firstName === firstName;
      })){
          jsonArray.push({"firstName": firstName, "lastName" : lastName, "id": id});
      };
}

Demo:

var jsonArray = [{"firstName":"John", "lastName":"Doe", "id":"1"}];

function addNewValues(jsonArray, firstName, lastName, id){
     if(!jsonArray.some(function(obj){
         return obj.firstName === firstName;
      })){
          jsonArray.push({"firstName": firstName, "lastName" : lastName, "id": id});
      };
}

addNewValues(jsonArray, "Jane", 
"Doe", "2");

console.log(jsonArray);
Run codeHide result
+1
source

,

    addNewValues({"firstName":"John", "lastName":"Doe", "id":"1"}, "Jane", "Doe", "2"); 

JSON (, ), JSON.

    addNewValues([{"firstName":"John", "lastName":"Doe", "id":"1"}], "Jane", "Doe", "2"); 

, .

    myObj.push({"firstName":firstName, "lastName":lastName }); 

jsfiddle

+1

json , JSON.parse, , .

var array = [];

// with push
function addNewValues(firstName, lastname, id) {
  // check if firstName already exists
  if(array.filter(function(x) { return x.firstName===firstName; }).length===0) {
    array.push({
        'firstName': firstName,
        'lastName': lastname,
        'id': id
    });
  }
}

// with concat
// I would suggest you to use this method
function addNewValues1(arr, firstName, lastname, id) {
  if(arr.filter(function(x) { return x.firstName===firstName; }).length===0) {
    return arr.concat([{
        'firstName': firstName,
        'lastName': lastname,
        'id': id
    }]);
  }
  return arr;
}

addNewValues("Jahn", "Doe", "1");
addNewValues("Jane", "Doe", "2");
console.log(array);

// with concat
array = addNewValues1(array, "Foo", "Bar", "3");
console.log(addNewValues1(array, "Foo1", "Bar1", "4"));
console.log(array);
Hide result
+1

, . , , , . .

let obj = {
    "firstName": "John",
    "lastName": "Doe",
    "id": "1"
};

function addNewValues(arr, firstName, lastName, id) {
    arr = Array.isArray(arr) ? arr : [arr];
    let obj = arr.find(v => v.firstName === firstName);
    if (! obj) {
        return arr.concat({firstName, lastName, id});
    }
    obj.lastName = lastName;
    obj.id = id;
    return arr;
}

console.log(addNewValues(obj, "Jane", "Foo", 3));
Hide result
+1

addNewValues ( ):

var values = [{"firstName":"John", "lastName":"Doe", "id":"1"}];
addNewValues(values , "Jane", "Doe", "2"); 
0

See below code. Hope this helps to understand your problem. After adding a new array, the updated value is displayed in the console.

Learn more about Javascript Array Methods: Unshift (), Shift (), Push () and Pop ()

var jsonArray=[{"firstName":"John", "lastName":"Doe", "id":"1"}];

function addNewValues(firstName, lastName, id){
// here you can check if exists or not
jsonArray.push({"firstName":firstName, "lastName":lastName,"id":id });
console.log(jsonArray);
return jsonArray;
}
<button type="button" onClick='addNewValues("Jane", 
"Doe", "2"); '>Click Me!</button>
Run codeHide result
0
source

Here you will find the solution https://jsfiddle.net/52q9v57j/

var jsonArray = [{"firstName":"John", "lastName":"Doe", "id":"1"}];

addNewValues = function(jsonArray, firstName, lastName, id){
	return jsonArray.push(
  	{"firstName": firstName, "lastName": lastName, "id": id}
  );
}

addNewValues(jsonArray, "Jane", "Doe", "2"); 
console.log(jsonArray);
Run codeHide result
0
source
newArray = [];
newArray.push(jsonArray);
function addNewValues(newArray, firstname, lastname, id){
    jsonArray.push({
        'firstName': firstname,
        'lastName': lastname,
        'id': id
    });
    return newArray;
}
newArray = addNewValues(newArray, 'Jane', 'Doe', '2');
// newArray now is array of 2 jsonObject

I hope for this help.

-1
source

Source: https://habr.com/ru/post/1681108/


All Articles