推动多维对象

时间:2012-06-08 20:55:46

标签: javascript jquery

我想最终得到一个像这样的对象:

{"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;

哪个也不起作用。可能错过了所有的东西,但任何帮助表示赞赏!感谢

5 个答案:

答案 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"]= valueobj.key = value等键/值。

所以,试试这个

var dataPoints = {};  
$('.test').each(function(index) {
    var $this = $(this);
    dataPoints[$this.find('.color').html()]= $this.find('.value').html();
});

答案 4 :(得分:0)

您错过了each()功能的近似括号。对象{}也没有推送方法。

如果要维护元素列表,请使用数组[]