簡體   English   中英

將項目添加到JSON對象

[英]Add items to JSON object

我正在使用promise來獲取JSON對象:

var x = get();
x.done(function(data) {
    for(var i in data) {

    }
});

當我執行console.log(data);時返回的數據

[{…}]
0:
customer: "9028"
data:
active: "1"
customer: "9028"
description: ""
id: "13717"
inherited: "0"
name: "Out of Hours"
priority: "1"
shared: "0"
sound: ""
__proto__: Object
voip_seq: "4"
__proto__: Object
length: 1
__proto__: Array(0)

這樣就可以了,但是在我的for循環中,我想向data添加2個項目

我嘗試將其添加到我的.done

var obj = { name: "Light" };
data.push(obj);

但這並沒有增加data

我的for循環如下所示:

                 for(var i in data) {
                    var m = '<option value="' + data[i].data.id + '"'
                    if(data[i].data.id == selected_val) {
                        m += ' selected="selected"';
                    }
                    m += '>' + data[i].data.name + '</option>';
                    $('#' + value_element_id).append(m);
                }

如果要在選擇中再添加兩個項目,則只需在循環開始之前將新對象推送到data數組中即可。 這些對象必須包含與來自Promise的JSON匹配的結構和屬性(“數據”子屬性中的“名稱”和“ id”),以便您的循環代碼可以處理它們。

在最簡單的情況下,它可能像

x.done(function(data) {
  data.push({ "data": { "name": "light", "id": 1234 } });
  data.push({ "data": { "name": "dark", "id": 5678 } });

  for(var i in data) {
    var m = '<option value="' + data[i].data.id + '"'
    if (data[i].data.id == selected_val) {
      m += ' selected="selected"';
    }
    m += '>' + data[i].data.name + '</option>';
    $('#' + value_element_id).append(m);
  }
});

演示: https : //jsfiddle.net/a286b7fw/1/

在這種情況下,我認為data不是數組,因此它沒有.push()方法。 您可以像這樣向對象添加屬性:

for(var i in data) {
  var m = '<option value="' + data[i].data.id + '"'
  if(data[i].data.id == selected_val) {
    m += ' selected="selected"';
  }
  m += '>' + data[i].data.name + '</option>';
  $('#' + value_element_id).append(m);

  // here it will add obj to data
  var obj = {name: "Light"};
  data = {
    ...data,
    obj
  }
}

暫無
暫無

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

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