首页 > 解决方案 > 如何过滤地图字段数组

问题描述

我有以下项目数组,我映射这些项目以获得结果

 var items = $.grep($.selections);

其中项目如下所示:

0: {ID: "310882", Type: "W", Total: 10}
1: {ID: "31094", Type: "W",  Total: 10}
2: {ID: "307969", Type: "W",  Total: 10}
3: {ID: "311951", Type: "W",Total: 10}
4: {ID: "ItemCover_1611315351331", Type: "F", Total: 5, AmountDue:55}

所以我想做的是得到所有我可以的总计如下

var AllTotal=items.map(x => x.Total);

这给了我以下结果

0: 10
1: 10
2: 10
3: 10
4: 5

如果你注意到数组中的这个项目,我的问题

4: {ID: "ItemCover_1611315351331", Type: "F", Total: 5, AmountDue:55}

它有一个 ID:以“ItemCover”开头,它的 AmountDue 为 55

当我有这种性质的项目时,我如何过滤掉总计 5 个并将其替换为应付金额,以便它现在看起来像这样

var AllTotal
   0: 10
    1: 10
    2: 10
    3: 10
    4: 55

标签: javascriptjquery

解决方案


假设您想要 AmountDue(如果存在)的最简单版本

const arr = [{ID: "310882", Type: "W", Total: 10},
 {ID: "31094", Type: "W",  Total: 10},
 {ID: "307969", Type: "W",  Total: 10},
 {ID: "311951", Type: "W",Total: 10},
 {ID: "ItemCover_1611315351331", Type: "F", Total: 5, AmountDue:55}];

 const newArr = arr.map(({Total,AmountDue}) => AmountDue || Total)

 console.log(newArr)


推荐阅读