javascript – .filter()数组使用另一个数组的元素

前端之家收集整理的这篇文章主要介绍了javascript – .filter()数组使用另一个数组的元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一系列人的名字以及他们的语言知识.我想要做的是将过滤器传递到语言列并过滤掉任何不匹配的结果.

这是示例数组

  1. var myArray = [["Steppen","Spanish Polish"],["Wolf","Spanish Polish Tagalog"],["Amanda","Spanish"],["Ada","Polish"],["Rhonda","Spanish Tagalog"]];

传入过滤器,它可以是一种语言,也可以是多种语言.即使过滤器中的一种语言匹配 – 也应该返回结果.因此,例如,“塔加拉族语”的过滤器应该返回 – Wolf和Rhonda. “西班牙语波兰语”的过滤器应该归还给所有人 – 西班牙语或波兰语的匹配.

我写了过滤器功能,但由于某种原因它被卡住了,当我通过过滤器“Tagalog”它只迭代到阵列中的第二个单元格(西班牙语波兰语塔加拉族语)并重复多次而不是前进.

我做错了什么,我应该以不同的方式迭代吗?

  1. var userPassedFilter = new Array();
  2. userPassedFilter[0] = "Tagalog";
  3.  
  4. newArray = consolidatedFilters(myArray,userPassedFilter);
  5. console.log(newArray);
  6.  
  7. function consolidatedFilters(passedArray,passedFilter)
  8. {
  9. var filteredArray = passedArray.filter(
  10. function(el)
  11. {
  12. for (var i = 0; i < passedArray.length; i++)
  13. {
  14. console.log("i is " + i);
  15. for (var j in passedFilter)
  16. {
  17. console.log("Passed Filter j " + passedFilter[j]);
  18. console.log("Passed Array i " + passedArray[i][1]);
  19. console.log("String Search " + passedArray[i][1].search(passedFilter[j]));
  20.  
  21. if (passedArray[i][1].search(passedFilter[j]) != -1)
  22. {
  23. return true;
  24. }
  25. }
  26. }
  27. return false;
  28. }
  29. );
  30. return filteredArray;
  31. }

解决方法

对我而言,似乎你让它变得有点过于复杂.

>迭代三次(过滤,循环,循环).
>为数组使用for in循环.
>同时使用新阵列和[…].

我稍微更新了一下,看起来这就是你想要的:http://jsfiddle.net/pimvdb/RQ6an/.

  1. var myArray = [["Steppen","Spanish Tagalog"]];
  2.  
  3. var userPassedFilter = ["Tagalog"];
  4.  
  5. newArray = consolidatedFilters(myArray,userPassedFilter);
  6. console.log(newArray);
  7.  
  8. function consolidatedFilters(passedArray,passedFilter) {
  9. var filteredArray = passedArray.filter(
  10. function(el) { // executed for each person
  11. for (var i = 0; i < passedFilter.length; i++) { // iterate over filter
  12. if (el[1].indexOf(passedFilter[i]) != -1) {
  13. return true; // if this person knows this language
  14. }
  15. }
  16. return false;
  17. }
  18. );
  19. return filteredArray;
  20. }

猜你在找的JavaScript相关文章