gpt4 book ai didi

Javascript 随条件减少

转载 作者:行者123 更新时间:2023-11-28 17:25:48 24 4
gpt4 key购买 nike

仅当累加器 (a) 和 currentValue (b) 均为整数时,如何使用reduce 才能返回总和?

我的 guestGroups 数组:

     "guestGroups":[  
{
"bookingNumber":"21.05.201827.05.20181208",
"arrivalDate":"2018-05-19T22:00:00.000Z",
"departureDate":"2018-05-25T22:00:00.000Z",
"customerId":1,
"fields":[
{
"value":"2",
"display_name":"Personen Anzahl",
"servicio_tags":[
"person-number-info"
]
}
],
"number":"041"
}
]

  getPersonNumberAdult() {
const personNumberField = this.fields.find(f => {
return f.servicio_tags && f.servicio_tags.includes('person-number-info');
});
return personNumberField ? Number(personNumberField.value.match(/\d+/)[0]) : '-';
}

isInt(value) {
let x = parseFloat(value);
return !isNaN(value) && (x | 0) === x;
}

guestInfo: t.guestGroups
.map(gg => gg.getPersonNumberAdult())
.reduce((function(a, b) {
if (a && b) {
{
if (this.isInt(a) && this.isInt(b)) {
return a + b
} else {
return '-'
}
}
}
}), 0)

这给了我未定义

感谢您的努力!

最佳答案

您的 getPersonNumberAdult 不应返回数字或字符串。如果没有可用的数字,它应该返回一个整数或 NaN'-' 只能用于最后格式化输出。

一旦获得,您可以过滤掉无效值并对其余值求和:

const sum = t.guestGroups
.map(gg => gg.getPersonNumberAdult())
.filter(v => isInt(v)) // or just !isNaN
.reduce((a, b) => a + b, 0);

或者只是将它们相加,然后如果有任何值无效,则将 NaN 替换为 '-':

const sum = t.guestGroups
.map(gg => gg.getPersonNumberAdult())
.reduce((a, b) => a + b, 0);
const output = isInt(sum) ? String(sum) : '-';

取决于您想要哪种行为。

关于Javascript 随条件减少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51633290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com