向JS Object添加额外值

时间:2015-05-03 23:01:41

标签: javascript 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>

3 个答案:

答案 0 :(得分:2)

您的问题是为了将多个值分配给数组中的元素,子元素必须是数组。这允许向Trainee对象中的Trainer项添加多个Data

&#13;
&#13;
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);
&#13;
<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>
&#13;
&#13;
&#13;

使用Push的Javascript阵列文档可以在w3schools

找到

答案 1 :(得分:0)

尝试以下方法:

Data[trainer][i] = trainee;

你可以在这里找到更多信息: How can I add a key/value pair to a JavaScript object?

答案 2 :(得分:0)

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