Javascript 如何按包含字符串的数组对象分组
我有一个数组Javascript 如何按包含字符串的数组对象分组,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我有一个数组 [<br> {CONTRACT_ID: 420, DEDUCTIONS: "Warehouse Fixture - Generic Double", AMOUNT: 600} <br> {CONTRACT_ID: 420, DEDUCTIONS: "Warehouse Fixture - Rack", AMOUNT: 750} <br>  
[<br>
{CONTRACT_ID: 420, DEDUCTIONS: "Warehouse Fixture - Generic Double", AMOUNT: 600} <br>
{CONTRACT_ID: 420, DEDUCTIONS: "Warehouse Fixture - Rack", AMOUNT: 750} <br>
{DEDUCTIONS: "Freight Incoming", AMOUNT: 10, RATE:2} <br>
{DEDUCTIONS: "Freight Outgoing", AMOUNT: 30, RATE:2} <br>
{DEDUCTIONS: "Warehouse", AMOUNT: 500} <br>
]
[
{合同编号:420,扣除额:“仓库固定装置-通用双联”,金额:600}
{合同编号:420,扣除额:“仓库固定装置-货架”,金额:750}
{扣除额:“货物进货”,金额:10,费率:2}
{扣除额:“运费出库”,金额:30,费率:2}
{扣除额:“仓库”,金额:500}
]
这就是我想要的结果:[<br>
{DEDUCTIONS: "Warehouse Fixture", AMOUNT: 1350} <br>
{DEDUCTIONS: "Freight", AMOUNT: 40} <br>
{DEDUCTIONS: "Warehouse", AMOUNT: 500} <br>
]
[
{扣除额:“仓库固定装置”,金额:1350}
{扣除额:“运费”,金额:40}
{扣除额:“仓库”,金额:500}
]
这可能吗?对于本例,下面的代码很好,但您需要定义更具体的分组逻辑
const indexedResult = {};
initialArray.forEach(obj => {
let key;
if ("CONTRACT_ID" in obj) {
key = obj.DEDUCTIONS.split(/ - /, 1)[0];
} else if ("RATE" in obj) {
key = obj.DEDUCTIONS.split(/ /, 1)[0];
} else {
key = obj.DEDUCTIONS;
}
if (key in indexedResult) {
indexedResult[key].AMOUNT += obj.AMOUNT;
} else {
indexedResult[key] = {
DEDUCTIONS: key,
AMOUNT: obj.AMOUNT
};
}
});
const result = Object.keys(indexedResult).map(key => indexedResult[key]);
您做了什么以及您希望jquery/javascript的方式?您需要的是您的努力,而不是您想从usI获得的每一个。对不起,Javascript将更好@Ajay2707