簡體   English   中英

向JS對象添加額外的值

[英]Adding extra values to JS Object

好的,我有一個包含所需數據的HTML列表。 看起來像這樣

ul
    li[data-trainer]>trainee
    li[data-trainer]>trainee
    li[data-trainer]>trainee

我對其進行迭代,並想要制作一個看起來像這樣的對象

{
    "Trainer":{0:Trainee1},
    "Trainer2":{1:Trainee2,2:Trainee3,3:Trainee4}
}

我嘗試了這個,還有更多

var Data = new Object();
var i = 0;
$(".blah-blah-ul li.active").each(function(){
    i++;
    var trainer = $(this).attr("data-trainer");
    var trainee = $(this).text();
    Data[trainer] = {};
    Data[trainer][i] = trainee;
})
console.log(Data);

Data[trainer][i] = trainee只剩下列表中的最后一個見習生。

來自console.log的數據:

Object
    Trainer1: Object
        2: Trainee2
    Trainer3: Object
        4: Trainee6

我嘗試制作一個數組,並使用push或制作一個字符串,但這沒有用。

如果有人可以建議合適的解決方案,將不勝感激。

這是HTML

<ul class="blah-blah-ul">
    <li class="active" data-trainer="Trainer1">Trainee1</li>
    <li class="active" data-trainer="Trainer1">Trainee2</li>
    <li data-trainer="Trainer2">Trainee3</li>
    <li data-trainer="Trainer2">Trainee4</li>
    <li class="active" data-trainer="Trainer3">Trainee5</li>
    <li class="active" data-trainer="Trainer3">Trainee6</li>
</ul>

您的問題是,要為數組中的元素分配多個值,子元素必須是數組。 這允許將多個Trainee添加到Data對象中的“ Trainer項。

 var Data = new Object(); var i = 0; $(".blah-blah-ul li.active").each(function(){ i++; var trainer = $(this).attr("data-trainer"); var trainee = $(this).text(); if(typeof Data[trainer] === 'undefined') { Data[trainer] = {}; } Data[trainer][i] = {trainee}; }) console.log(Data); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul class="blah-blah-ul"> <li class="active" data-trainer="Trainer1">Trainee1</li> <li class="active" data-trainer="Trainer1">Trainee2</li> <li data-trainer="Trainer2">Trainee3</li> <li data-trainer="Trainer2">Trainee4</li> <li class="active" data-trainer="Trainer3">Trainee5</li> <li class="active" data-trainer="Trainer3">Trainee6</li> </ul> 

有關使用Push的Javascript數組的文檔,請參見w3schools

請嘗試以下方法:

Data[trainer][i] = trainee;

您可以在此處找到更多信息: 如何將鍵/值對添加到JavaScript對象?

var Data = {};
var i = 0;
$(".blah-blah-ul li.active").each(function(){
    i++;
    var trainer = $(this).attr("data-trainer");
    var trainee = $(this).text();
    Data[trainer] = {};
    Data[trainer][i] = trainee;
})
console.log(Data);

暫無
暫無

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

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