我想最终得到一个像这样的对象:
{"Red 1":53,"Blue 2":26,"Green 3":25}
来自以下示例:
试图将数据从内部推送到对象,但它是多维的,我不知道如何实现这一点:
//html
<div class="test">
<div class="color">Red 1</div>
<div class="value">53</div>
</div>
<div class="test">
<div class="color">Blue 2</div>
<div class="value">26</div>
</div>
<div class="test">
<div class="color">Green 3</div>
<div class="value">25</div>
</div>
//js
var dataPoints = {};
var colorTitle = '';
var colorValue = '';
$('.test').each(function(index) {
colorTitle = $(this).find('.color').html();
colorValue = $(this).find('.value').html();
dataPoints.push({colorTitle:colorValue});
});
上面的代码显然不起作用,但我想基本上展示我想要做的事情。
也尝试过这种方法:
dataPoints[index][colorTitle] = colorValue;
哪个也不起作用。可能错过了所有的东西,但任何帮助表示赞赏!感谢
答案 0 :(得分:5)
这样做:
var data = {};
$(".test").each(function() {
var key = $(this).find(".color").text();
var value = $(this).find(".value").text();
data[key] = value;
};
答案 1 :(得分:3)
在处理对象时使用正确的键/值赋值。对象没有push
方法。
$('.test').each(function(index) {
dataPoints[$(this).find(".color").text()] = $(this).find(".value").text();
});
答案 2 :(得分:2)
实际上你没有做到这一点,但认为它是一个对象,而不是一个数组 -
var dataPoints = new Object();
var colorTitle = '';
var colorValue = '';
$('.test').each(function(index) {
colorTitle = $(this).find('.color').html();
colorValue = $(this).find('.value').html();
dataPoints[colorTitle] = colorValue;
});
//test it!
alert(JSON.stringify(dataPoints));
答案 3 :(得分:2)
它不是多维的。它甚至不是一个阵列。
push
用于数组。
在object
中,您可以添加obj["key"]= value
或obj.key = value
等键/值。
所以,试试这个
var dataPoints = {};
$('.test').each(function(index) {
var $this = $(this);
dataPoints[$this.find('.color').html()]= $this.find('.value').html();
});
答案 4 :(得分:0)
您错过了each()
功能的近似括号。对象{}
也没有推送方法。
如果要维护元素列表,请使用数组[]
。