2

次のようなオブジェクトで終了したいと思います。

{"Red 1":53,"Blue 2":26,"Green 3":25}

次の例から:

.each 内からオブジェクトにデータをプッシュしようとしていましたが、多次元であるため、これを達成する方法がわかりません:

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

どちらも機能しません。おそらく何かが一緒に欠けているかもしれませんが、どんな助けも大歓迎です! ありがとう

4

5 に答える 5

6

これはそれを行います:

var data = {};
$(".test").each(function() {
   var key = $(this).find(".color").text();
   var value = $(this).find(".value").text();

   data[key] = value;
};
于 2012-06-08T20:59:21.233 に答える
3

オブジェクトを扱うときは、適切なキー/値の割り当てを使用してください。オブジェクトにはメソッドがありませんpush

$('.test').each(function(index) {
    dataPoints[$(this).find(".color").text()] = $(this).find(".value").text();
});
于 2012-06-08T20:58:57.010 に答える
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));
于 2012-06-08T21:09:28.403 に答える
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();
});
于 2012-06-08T21:29:00.917 に答える
0

関数の閉じ括弧がありませんeach()。また、オブジェクト{}には push メソッドがありません。

要素のリストを保持する場合は、配列を使用し[]ます。

于 2012-06-08T20:59:20.113 に答える