簡體   English   中英

在JSON數組中添加新對象

[英]Add new object in JSON array

我正在使用javascript和JSON。 我有一個像這樣的JSON對象:

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

就我而言,我有一個像這樣的功能:

function addNewValues(jsonArray, firstName, lastName, id)

如果“firstName”不匹配,我應該在數組中創建一個新值。

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

它應該返回:

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

我該如何添加這個新職位? 我試過myObj.push({"firstName":firstName, "lastName":lastName }); 沒有任何成功。

提前致謝。

除了線路以外,您的代碼一切正常

    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中查看此工作演示

如果你的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); 

您可以使用.some()方法來測試給定數組是否包含具有此firstName的對象,然后使用這些屬性推送新對象。

這是你的代碼應該如何:

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

演示:

 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); 

為此,您可以使用以下功能。 如果firstname存在,它將更新記錄,否則它將創建一個新條目。 下面的函數將找到給定firstname的第一個條目。

 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)); 

在你的調用addNewValues ,你應該傳遞一個數組作為第一個參數(你傳遞一個對象):

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

請看下面的代碼。 希望這有助於理解您的問題。 添加新數組后,在控制台中顯示更新的值。

您可以閱讀有關Javascript數組方法的更多信息:Unshift(),Shift(),Push()和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> 

在這里,您可以使用解決方案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); 

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

希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM