<!doctype html> <html> <head> <meta charset="UTF-8"> <title>find查找数组数据</title> </head> <body> <script> let myId = 3; let data = [ {id:1,value:false}, {id:2,value:false}, {id:3,value:false} ]; var findVal = data.find(item => { return item.id === myId; }); findVal.value = true; //修改匹配项的值 console.log(findVal); // 打印匹配项数据 </script> </body> </html>
遇到个功能是要分类就想说在前端过滤,不要从查数据库的时候过滤了。然后就想说除了filter还有啥好用的
发现有个find,测试一番之后发现
const list = [{'name':'1',index:1},{'name':'2'},{'name':'1'}]
let list2 = list.find(i=>i.name==='1')
let list3 = list.filter(i=>i.name==='1')
console.log(list); [ { name: '1', index: 1 }, { name: '2' }, { name: '1' } ]
console.log(list2); { name: '1', index: 1 }
console.log(list3);[ { name: '1', index: 1 }, { name: '1' } ]
find 和 filter 都是不改变原数组的方法
但是find只查出第一个符合条件的结果像例子里是直接返回了一个对象而不是数组!
,而filter返回全部结果仍然是数组。