簡體   English   中英

javascript對象索引鍵

[英]javascript object index keys

我正在嘗試找出構造JavaScript對象的最佳方法。 我想要的是一個可以在其中通過鍵選擇嵌套對象的對象,其結構與此類似:

        trackObject:
            [{
            row1:{rowId:"#row1",rowSample:
                {sampleId:"#1",notes:
                    [0,400,800]
                }
            },
            row2:{rowId:"#row2",rowSample:
                {sampleId:"#2",notes:
                    [0,400,800]
                }
            },                
        }]

理想情況下,我希望能夠通過在“行”層(即row1row2建立索引來修改此對象。 問題是使行名成為變量。 即上面的對象將通過調用trackObject.row1返回我需要的對象,但是由於row1部分需要動態,因此我不確定如何從這一點動態對其進行索引。

我嘗試了一些變體,例如不將trackObject為數組,而是將對象更改為row1並將其更改為"row1":{rowId...但后來我無法引用其嵌套的對象屬性( {rowId...

我之前用JSON中的鍵設置對象,並且可以很好地通過鍵索引,但是由於某些原因,我在JS中苦苦掙扎...

您可以使用括號表示法來訪問對象的成員。

var obj = {
  row1: {
    rowId: '#row1'
  },
  row2: {
    rowId: '#row2'
  }
};

// index stored in variable
var index = 'row1';

// get row by using bracket notation
var row = obj[index];

console.log(row.rowId); // '#row1';

構造javascript對象的便捷方法
考慮使用自定義getter方法,該方法接受索引/數字作為參數:

 var data = { trackObject : { row1: { rowId: "#row1", rowSample: { sampleId: "#1", notes: [0,400,800] } }, row2: { rowId: "#row2", rowSample: { sampleId: "#2", notes: [0,400,800] } }, }, getRow : function (idx) { var obj = this.trackObject['row' + idx]; if (!obj) { throw new Error("Undefined trackObject key: row" + idx); } return obj; } }; console.log(data.getRow(2).rowSample); console.log(data.getRow(5).rowSample); // will throw "Uncaught Error: Undefined trackObject key: row5" 

暫無
暫無

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

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