87,993
社区成员
发帖
与我相关
我的任务
分享
var para = 150
var array = [{PayTotal: 100},{PayTotal: 200},{PayTotal: 300}]
// 用para 去匹配array.PayTotal的字段值,从最小值开始计算 如果当前array.PayTotal大于para那么当前这条PayTotal值
// 直接等于para 然后输出 当前数组对象,删除其余对象
// 如果array.PayTotal小于para 就依次从最下值开始递减,直到不能在减,array.PayTotal等于被减掉得值,
// 然后输出被递减得array.PayTotal 移除未操作对象
var para = 150;
var array = [{PayTotal: 100},{PayTotal: 200},{PayTotal: 300}];
array.sort(function(a,b){return a.PayTotal - b.PayTotal;});//如果数据是已经排序好的,这行可以去掉。
for (var i = 0; i < array.length; i++) {
if (array[i].PayTotal < para) {
para -= array[i].PayTotal;
} else {
array[i].PayTotal = para;
array.splice(i+1);
break;
}
}
alert(JSON.stringify(array,null,4));
[/quote]
OK了 多谢。
var para = 150;
var array = [{PayTotal: 100},{PayTotal: 200},{PayTotal: 300}];
array.sort(function(a,b){return a.PayTotal - b.PayTotal;});//如果数据是已经排序好的,这行可以去掉。
for (var i = 0; i < array.length; i++) {
if (array[i].PayTotal < para) {
para -= array[i].PayTotal;
} else {
array[i].PayTotal = para;
array.splice(i+1);
break;
}
}
alert(JSON.stringify(array,null,4));