【发布时间】:2020-08-03 07:04:18
【问题描述】:
我有一个 JSON 响应,其中包含用户播放音频文件的时间。对于我拥有的每个音频会话:
{"session": {"checkpoints": [
{"status": "started", "position": 0, "createdAt": "2020-02-
20T16:55:37.795Z"},
{"status": "paused", "position": 195, "createdAt": "2020-02-
20T16:58:53.917Z"},
{"status": "stopped", "position": 195, "createdAt": "2020-02-
20T17:01:04.230Z"},
{"status": "closed", "position": 195, "createdAt": "2020-02-
20T17:01:04.250Z"}], "totalTime": 195}}
我想映射所有的 totalTime 值并找到最大值。做这个的最好方式是什么? 我最初做的是:
let maxValue = 0
let data = JSON.parse(audios).data
for (let totalTime in data) {
if (data.hasOwnProperty(totalTime)) {
let value = data[totalTime]
if (value > maxValue) {
maxValue = value
}
}
}
【问题讨论】:
-
var timeArray = []; data.forEach(item => emptyArray.push(item.totalTime.parseInt())); console.log(timeArray.max)100% 肯定它可以比这个使用过滤器更小,但我懒得想出一个大声笑 -
两个问题:1)为什么你尝试的没有奏效? 2)您的条目格式如何? (正如您在那里展示的那样,它看起来像是一个对象的一个字段。所以每个条目都在同一个对象的一个字段中,或者每个条目都在它自己的对象中,每个条目都有“音频”字段?)。跨度>
-
console.log( JSON.parse(audios).data.map(x=>+x.totalTime).filter(x=>!x).reduce((acc,x)=>Math.max(acc,x)) ) -
@KevinHernandez 100% 肯定
item.totalTime.parseInt()会抛出Uncaught TypeError: item.totalTime.parseInt is not a function -
@user120242 这两个问题我都在尝试解决同一个谜团(至少对我而言):OP 的初始数据究竟是如何格式化的?他们的例子对我来说不是很清楚,因为实际上有一个条目数据可以与他们的代码一起使用。那将是
{ time1: 2000, time2: 3200, time3: 2800 },这不太可能,但可能。由于他们的入口示例和他们的代码不匹配,我想知道他们到底是在哪里弄糊涂了。
标签: javascript arrays node.js json loops