だから私はオブジェクトで埋められた配列を持っています。オブジェクトには2つの値があり、1つはリスト項目を含み、もう1つはfloat(価格)を含みます。リストをDOM要素にプッシュしようとしていますが、変数はグローバルに定義されていません。
このコードは、2番目の配列項目をコンソールに出力します。
$('#coll-price-filter').change(function() {
var newList = [];
$('#coll-product-list li').each(function(idx, li) {
pprice = $(li).find('.coll-prod-price').html().trim().substring(1)
pprice = parseInt(pprice);
newList[idx] = {
value: $(li).wrap('<div></div>').parent().html(),
price: pprice
}
newList.sort(function(a, b){
a = a.price, b = b.price;
return a > b ? 1 : a < b ? -1 : 0;
});
});
console.log(newList[1].value);
});
しかし、これはしません
$('#coll-price-filter').change(function() {
var newList = [];
$('#coll-product-list li').each(function(idx, li) {
pprice = $(li).find('.coll-prod-price').html().trim().substring(1)
pprice = parseInt(pprice);
newList[idx] = {
value: $(li).wrap('<div></div>').parent().html(),
price: pprice
}
newList.sort(function(a, b){
a = a.price, b = b.price;
return a > b ? 1 : a < b ? -1 : 0;
});
});
i = newList.length;
while (i > 0) {
console.log(newList[i].listItem);
i--;
}
});
したがって、whileループがnewList[]
オブジェクトのアクセシビリティを破壊しているように見えます。私はそれをいくつかの方法で試しましたが、.each()
イテレータ内にいる場合は機能します。しかし、私はそれを外でアクセスする必要があります。