【发布时间】:2018-04-18 01:40:17
【问题描述】:
我想知道是否有办法使用 array.map() 来做到这一点
我有两个位置列表(WOL、SYD、MEL 等),其中一个包含每个位置中所有设备为子设备的站点总数,另一个仅包含有错误的设备。
我需要找出每个站点出错的设备占每个站点的设备总数的百分比。
有没有办法使用 uniqueSitesCount.map(...) 来做到这一点?我整个周末都在查看文档,并试图在问这里之前弄清楚,但到目前为止都失败了。
uniqueSitesCountNotOk - 位置数组,仅将出错的设备添加到“设备”子数组中:
[ { site: 'CBR',
devices: [ [Object], [Object], [Object], [Object], [Object], [Object] ] },
{ site: 'MEL',
devices: [ [Object], [Object], [Object], [Object], [Object] ] },
{ site: 'SYD', devices: [] },
{ site: 'WOL', devices: [] } ]
uniqueSitesCount - 包含所有对象的位置数组
[ { site: 'CBR',
devices: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object] ] },
{ site: 'MEL',
devices: [ [Object], [Object], [Object], [Object], [Object] ] },
{ site: 'SYD', devices: [ [Object], [Object], [Object], [Object], [Object] ] },
{ site: 'WOL', devices: [ [Object], [Object], [Object], [Object], [Object] ] } ]
功能:
为了清楚起见,编辑:uniqueSitesCount[i].count 到 uniqueSitesCount[i].devices.length
var getSiteErrorPercentage = function(uniqueSitesCount, uniqueSitesCountNotOk) {
for (var i = 0; i < uniqueSitesCount.length; i++) {
if (uniqueSitesCountNotOk[i].devices.length > 0) {
console.log(`${uniqueSitesCount[i].site} - ${(uniqueSitesCountNotOk[i].devices.length / uniqueSitesCount[i].devices.length* 100).toFixed(2)}%`)
} else {
console.log(uniqueSitesCount[i].site + ' - 0%')
}
}
}
【问题讨论】:
-
好吧
map用于映射,IOW:它会返回一些东西,你的代码不会返回任何东西,而只是控制台日志。相反,您可能会想到forEach。答案是肯定的。 -
有使用地图的理由吗?似乎在回调中使用带有 find 的过滤器会更容易。虽然很难帮助 [object] 摆脱 tbh。
-
您只需要计算设备数组中的对象数量,还是每个对象都有您需要计算的数量?
-
@Keith,它将返回百分比,目前只是在测试时使用 Console.Log()
-
@DLowther - 我不只是过滤。我已经有一个数组被过滤为只有错误的设备。我想要做的是显示错误设备与总设备的百分比
标签: javascript arrays node.js ecmascript-6