过去一天我一直在努力解决这个问题,而我似乎无法让它发挥作用。以下代码始终返回false。我尝试了hasOwnProperty
,typeof === 'undefined'
,typeof == 'undefined'
,我甚至尝试过使用looped_array[major_minor]['sum_sales']
。我永远不会得到循环的添加部分。它总是返回false。
为了论证,我们只是说我的任务是在纯JavaScript中执行此操作。我可以在PHP和Python中轻松完成此操作,但我无法使用它们。这很可能是我的问题,我试图使用PHP知识并将其应用于js。我不是一个javascript程序员,但我需要学习。
我需要遍历几千条记录并从中构建一个求和数组。
我的原始数据看起来像
item['net_price_extended']
item['pg_major']
item['pg_minor']
major_minor是这样创建的
var major_minor = item['pg_major'] + '' + item['pg_minor'];
代码我现在正在尝试不起作用
if('sum_sales' in looped_array[major_minor]) {
console.log("should be true");
console.log('sum_sales' in looped_array[major_minor]);
looped_array[major_minor]['sum_sales'] += parseFloat(item['net_price_extended']);
} else {
console.log("should be false");
console.log('sum_sales' in looped_array[major_minor]);
looped_array[major_minor]['sum_sales'] = parseFloat(item['net_price_extended']);
}
循环的所有代码
for(r in margin_array) {
var item = margin_array[r];
var major_minor = item['pg_major'] + item['pg_minor'];
looped_array[major_minor] = {};
looped_array[major_minor]['pg_major'] = item['pg_major'];
looped_array[major_minor]['major_description'] = item['major_description'];
looped_array[major_minor]['pg_minor'] = item['pg_minor'];
looped_array[major_minor]['minor_description'] = item['minor_description'];
/************************
* Calculate the totals *
************************/
if(looped_array[major_minor] && looped_array[major_minor]['sum_sales']) {
looped_array[major_minor]['sum_sales'] += parseFloat(item['net_price_extended']);
} else {
looped_array[major_minor]['sum_sales'] = parseFloat(item['net_price_extended']);
}
}
答案 0 :(得分:0)
在每次迭代中,您再次覆盖looped_array[major_minor]
:
looped_array[major_minor] = {};
您应该检查一下是否设置了looped_array[major_minor]
,这样就不会覆盖整个事情:
for(r in margin_array) {
var item = margin_array[r];
var major_minor = item['pg_major'] + item['pg_minor'];
/************************
* Calculate the totals *
************************/
if(looped_array[major_minor]) {
looped_array[major_minor]['sum_sales'] += parseFloat(item['net_price_extended']);
} else {
looped_array[major_minor] = {};
looped_array[major_minor]['pg_major'] = item['pg_major'];
looped_array[major_minor]['major_description'] = item['major_description'];
looped_array[major_minor]['pg_minor'] = item['pg_minor'];
looped_array[major_minor]['minor_description'] = item['minor_description'];
looped_array[major_minor]['sum_sales'] = parseFloat(item['net_price_extended']);
}
}