js中数组对象按照weight顺序逐一勾选selected勾选至选满总赠送件
假设有以下数组对象:
let items = [
{ name: 'item1', weight: 2, selected: false },
{ name: 'item2', weight: 3, selected: false },
{ name: 'item3', weight: 1, selected: false },
{ name: 'item4', weight: 4, selected: false }
];
可以先按照 weight 属性排序:
items.sort((a, b) => a.weight - b.weight);
然后设置一个变量表示已选中的赠品数量和已选中的赠品总重量:
let selectedCount = 0;
let selectedWeight = 0;
接着使用 for 循环逐一勾选 selected 属性为 false 的对象,直到已选满总赠送件:
for (let i = 0; i < items.length; i++) {
if (!items[i].selected) { // 如果当前对象未被选中
if (selectedCount + 1 <= totalGiftCount && selectedWeight + items[i].weight <= totalGiftWeight) { // 如果加上当前对象后未超出总赠送件和总重量
items[i].selected = true; // 勾选当前对象
selectedCount++; // 记录已选中的赠品数量
selectedWeight += items[i].weight; // 记录已选中的赠品总重量
} else {
break; // 如果加上当前对象后超出总赠送件或总重量,退出循环
}
}
}
其中,totalGiftCount 和 totalGiftWeight 表示总赠送件和总重量
原文地址: http://www.cveoy.top/t/topic/eB4X 著作权归作者所有。请勿转载和采集!