javascript - 用 ES 语法替换 for 循环
问题描述
我正在尝试用 ES 语法重写我的循环。我试图只替换一个循环,但它被调用了几次。如何使用 ES 语法返回单个值?输出应该是未定义的或单个值。
输入示例:
[{"events": [{"type": "Change", "field_name": "123"}], "created_at": "2017-07-01"},
{"events": [{"type": "Change", "field_name": "456"}], "created_at": "2017-08-01"},
{"events": [{"type": "Change", "field_name": "789"}], "created_at": "2017-09-01"}]
和功能:
function extractAuditEventDate(data, field, type) {
console.log(data)
for (var i = 0; i < data.length; i++) {
const audit = data[i]
// const event = audits.events.find(e => e.type === type && e.field_name === field)
for (var j = 0; j < audit.events.length; j++) {
const event = audit.events[j]
if (event.type === type && event.field_name === field) {
//console.log(audits.created_at)
return audit.created_at
}
}
}
}
如果我extractAuditEventDate
将参数数据作为输入示例传递,“456”作为字段名,“更改”作为类型,我希望得到“2018-07-01”
解决方案
找不到物品时处理案件的小替代方案:
const data = [{"events": [{"type": "Change", "field_name": "123"}], "created_at": "2017-07-01"},
{"events": [{"type": "Change", "field_name": "456"}], "created_at": "2017-08-01"},
{"events": [{"type": "Change", "field_name": "789"}], "created_at": "2017-09-01"}]
const extractAuditEventDate = (data, field, type) => ({...
data.find(audit => audit.events.some(event =>
event.type === type && event.field_name === field))}).created_at
console.log( extractAuditEventDate(data, '123', 'Change') )
console.log( extractAuditEventDate(data, '123', 'change') )
由于开销,ES6 功能替代品应该比您的 ES 版本慢几倍。
更快、更易读的替代方法可以是for...of
循环(IE 不支持):
const data = [{"events": [{"type": "Change", "field_name": "123"}], "created_at": "2017-07-01"},
{"events": [{"type": "Change", "field_name": "456"}], "created_at": "2017-08-01"},
{"events": [{"type": "Change", "field_name": "789"}], "created_at": "2017-09-01"}]
function extractAuditEventDate(data, field, type) {
for (let audit of data)
for (let event of audit.events)
if (event.type === type && event.field_name === field)
return audit.created_at
}
console.log( extractAuditEventDate(data, '123', 'Change') )
console.log( extractAuditEventDate(data, '123', 'change') )
推荐阅读
- c++ - C++ 中是否存在 STL unordered_map 的变体,它只允许添加最早放置的元素?
- javascript - 如何为每个客户端同步计时器
- javascript - jQuery 没有在 wordpress 中定义
- c# - 错误:无法从方法组转换为字符串
- arrays - 如何为大型数组做批量速记循环?
- php - 在 WooCommerce 的一周中的特定日期为某些运输区域提供免费送货服务
- python - 如何在 Django 中构建包含文件的 HttpResponse 到 jquery 请求?
- python - 我的水印应用程序有问题吗?
- amazon-redshift - ~ 字符在雪花中显示编译错误
- javascript - 为什么我在 JSON 服务器 POST 请求中收到错误 net::ERR_CONNECTION_REFUSED?