javascript 如何在对象中过滤数组?[关闭]

xqkwcwgp  于 2023-03-28  发布在  Java
关注(0)|答案(3)|浏览(196)

**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
1小时前关闭。
Improve this question
我想只过滤颜色为红色的人作为favColor...我该怎么做?这是我尝试的:但不起作用

  1. const filteredpersonen = personen.filter(personen => personen.favColor= 'red');
  2. console.log(filteredpersonen);

这是我的代码:

  1. let personen = [
  2. {
  3. naam : 'jan',
  4. age : 41,
  5. favColor:[
  6. 'blue',
  7. 'green',
  8. 'yellow',
  9. 'orange'
  10. ]
  11. },
  12. {
  13. naam : 'james',
  14. age : 31,
  15. favColor:[
  16. 'red',
  17. 'black',
  18. 'yellow',
  19. 'purple'
  20. ]
  21. },
  22. {
  23. naam : 'linda',
  24. age : 21,
  25. favColor:[
  26. 'blue',
  27. 'white',
  28. 'red',
  29. 'grey'
  30. ]
  31. },
  32. {
  33. naam : 'marya',
  34. age : 31,
  35. favColor:[
  36. 'creme',
  37. 'green',
  38. 'orange',
  39. 'red'
  40. ]
  41. }
  42. ]
piok6c0g

piok6c0g1#

  1. =是赋值,=====是比较
  2. favColor是一个数组,所以执行favColor === 'red'没有意义
    使用.includes
  1. const filteredpersonen = personen.filter(personen => personen.favColor.includes('red'));
  2. console.log(filteredpersonen);
  1. let personen = [{
  2. naam: 'jan',
  3. age: 41,
  4. favColor: [
  5. 'blue',
  6. 'green',
  7. 'yellow',
  8. 'orange'
  9. ]
  10. },
  11. {
  12. naam: 'james',
  13. age: 31,
  14. favColor: [
  15. 'red',
  16. 'black',
  17. 'yellow',
  18. 'purple'
  19. ]
  20. },
  21. {
  22. naam: 'linda',
  23. age: 21,
  24. favColor: [
  25. 'blue',
  26. 'white',
  27. 'red',
  28. 'grey'
  29. ]
  30. },
  31. {
  32. naam: 'marya',
  33. age: 31,
  34. favColor: [
  35. 'creme',
  36. 'green',
  37. 'orange',
  38. 'red'
  39. ]
  40. }
  41. ]
  42. const filteredpersonen = personen.filter(personen => personen.favColor.includes('red'));
  43. console.log(filteredpersonen);
展开查看全部
jvidinwx

jvidinwx2#

只需要使用includes方法来查找数组中的颜色。

  1. let personen = [{
  2. naam: 'jan',
  3. age: 41,
  4. favColor: ['blue','green','yellow','orange']
  5. },
  6. {
  7. naam: 'james',
  8. age: 31,
  9. favColor: ['red','black','yellow','purple']
  10. },
  11. {
  12. naam: 'linda',
  13. age: 21,
  14. favColor: ['blue','white','red','grey']
  15. },
  16. {
  17. naam: 'marya',
  18. age: 31,
  19. favColor: ['creme', 'green', 'orange','red']
  20. }
  21. ]
  22. const filteredPersonen = personen.filter(person => person.favColor.includes('red'));
  23. console.log(filteredPersonen);
展开查看全部
zqry0prt

zqry0prt3#

您当前正在 * 分配 * 值'red'给每个人的favColor,而不是进行任何类型的比较。看起来您试图使用==(比较)或===(严格比较);这将尝试将字符串('red')与数组进行比较(检查数组是否 * 等于 * 字符串),数组始终为false
相反,您需要检查值'red'是否在数组中。数组有一个方法,名为includes()

  1. const filteredpersonen = personen.filter(personen => personen.favColor.includes('red');
  1. let personen = [{
  2. naam: 'jan',
  3. age: 41,
  4. favColor: [
  5. 'blue',
  6. 'green',
  7. 'yellow',
  8. 'orange'
  9. ]
  10. },
  11. {
  12. naam: 'james',
  13. age: 31,
  14. favColor: [
  15. 'red',
  16. 'black',
  17. 'yellow',
  18. 'purple'
  19. ]
  20. },
  21. {
  22. naam: 'linda',
  23. age: 21,
  24. favColor: [
  25. 'blue',
  26. 'white',
  27. 'red',
  28. 'grey'
  29. ]
  30. },
  31. {
  32. naam: 'marya',
  33. age: 31,
  34. favColor: [
  35. 'creme',
  36. 'green',
  37. 'orange',
  38. 'red'
  39. ]
  40. }
  41. ]
  42. const filteredpersonen = personen.filter(personen => personen.favColor.includes('red'));
  43. console.log(filteredpersonen);
展开查看全部

相关问题