如何优雅地写for if嵌套

业务中经常遇到的问题,从后台返回某一个字段数据为id值,前端需要展示为汉字(name),因此需要向后台请求获得一个包含key为id与name的对象数组,然后在数组中遍历获取id对应的name值

我处理过的方式一般有两种
1.

for(let item of Array) {
    if(item.id === id) {
        return item.name
    }
}

第一种方式是我通常用的,从最开始的
for(var i = 0; i < Array.length; i++)
慢慢到
for(let i in Array)
最后到现在的
for(let i of Array)
虽然也已经越来越简洁了,但是总感觉缺少一份优雅。
第二种使用了map方法,在我第一次见到的时候颇为惊艳,有一种代码还能这么写的感叹。
但是在炫技性质的几次尝试之后发现最后还要把数组处理成字符串返回,
反而也有一种华而不实的感觉。

大家有什么简洁而优雅的方式处理这样的循环吗?
类似的还有多重for循环嵌套的优化

阅读 2.2k
4 个回答

遍历数组取值,那就用数组提供的方法,筛选的话用filter比较合适。

[{}].filter(res=>{return res.id == id})[0].name

单就你描述的需求,应该先把后台返回的字典格式化成对象,然后直接用 id 获取 name,而不是每次都循环查找。

const obj = arr.find(item => item.id === id)
if (obj) {
    return obj.name;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题