好的,我有一个包含我需要的数据的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>
答案 0 :(得分:2)
您的问题是为了将多个值分配给数组中的元素,子元素必须是数组。这允许向Trainee
对象中的Trainer
项添加多个Data
。
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;
使用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);