2017-02-23 93 views
0

我有一個大致的JavaScript函數填補數據列出如下:如何通過jQuery中的索引訪問對象鍵?

// manage all drop down list control 
var ajaxFillDropDownList = function (options, ddl) { 

    ddl.find("option").remove(); 

    ddl.addClass("form-control required") 
     .append($("<option />").attr("value", "") 
     .text("------ Please Select a item --------") 
     ); 

    $.ajax(options) 
     .done(function (data) { 

      var result = ""; 

      if (data.value) { 
       result = JSON.parse(data.value); 
      } 

      $.each(result, function (rowIndex, r) { 
       ddl.append($("<option></option>") 
        .val(r.?) 
        .text(r.?); 
      }); 
     }) 
     .fail(function (error) { 
      ddl.append($("<option />").attr("value", "").text("error in load")); 
     }); 
} 

下面的函數被調用:

// -- Fill dropdownlist 
var fillMyList = function() { 
    try { 

     var options = { 
      type: "POST", 
      url: "/User/GetUserList", 
      data: JSON.stringify({}), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json" 
     } 

     ajaxFillDropDownList(options, $("#ddlUser")); 

    } catch (error) { 
     ShowClientErrorMessage("client Error", error.stack, error.message); 
    } 
} 

我想在$。每個環路動態獲取結果的關鍵。我厭倦了使用下面的代碼,但是列表中填充了關鍵名稱。

.val("r." + Object.keys(r)[0]) 

如果有人能指導我,我將不勝感激。

+6

對象有沒有內在的順序,因此無法通過索引訪問。如果您需要這種行爲,請使用數組 –

+0

感謝大家。我的問題解決了。 –

回答

0

我改變.val("r." + Object.keys(r)[0])

.val(eval("r." + Object.keys(r)[0])) 
.text(eval("r." + Object.keys(r)[1])) 

代碼成功實施。

+1

我認爲這不是一個可行的解決方案。 'eval()'被認爲是你可以在JS中使用的最糟糕的東西。 –

1

爲快速參考小提琴鏈接https://jsfiddle.net/rj1405/sd4mxpae/2/

重點:Object.keys(obj)[0]

價值:這裏是objresult還是我myObject數組對象。

obj[Object.keys(obj)[0]] 

您將能夠運行波紋管代碼。

var myObject = [{ 
 
    property1: 'value 1' 
 
}, { 
 
    property2: 'value 2' 
 
}] 
 

 
var selectElement = document.getElementById('selectElement'); 
 
$.each(myObject, function (i, r) { 
 
$(selectElement).append($('<option>',{ 
 
     value: Object.keys(r)[0], 
 
     text : r[Object.keys(r)[0]] 
 
    })); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="selectElement"> 
 
</select>