ผมเห็นตัวอย่าง (Official) ใน Angular:
import { map } from 'rxjs/operators';
const nums = of(1, 2, 3);
const squareValues = filter((val: number) => val %2 == 0);
const squaredNums = squareValues(nums);
squaredNums.subscribe(x => console.log(x));
ผมก็เข้าใจว่า ตัวแปร nums เป็นอาร์เรย์ทั่วไป จึงใช้ map หรือใช้ filter โดยมีตัววิ่งเป็นข้อมูลแต่ละตัวในอาร์เรย์ ก็ดูไม่มีปัญหาอะไร ผมเลยลองใช้กับอาร์เรย์ของออบเจ็กต์
const users= of(User[])
const filterOf = filter((user:User) => user.id%2==0);
coonst observable = filterOf(users);
ปรากฎว่าใช้ไม่ได้ มีแจ้งว่า ตัวแปรเข้าต้องเป็นอาร์เรย์ User[] แต่ใส่มาเป็น User ผมเลยคิดว่ามันไม่เหมือนกันกับ of(1,2,3) และเป็น number[] เหรอ?
เมื่อไม่ให้ใช้ก็ไม่ใช้ แล้ว จะให้ใส่เป็นอาร์เรย์ User[] ใช่ไหม ได้ แก้ใหม่เป็น
const filterOf = map((uses:User[]) => users.filter((user)=>user.id%2==0));
ปรากฎว่าได้จริงๆ ในตัวอย่างไม่เห็นบอกยกตัวอย่างแบบอาร์เรย์ เลยนึกว่าเป็นอาร์เรย์แล้ว ไม่ใช่เลย แก้โดยใช้ map อีกที และแตกย่อย โดย filter
ไม่มีความคิดเห็น:
แสดงความคิดเห็น