3.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. //! filter方法:过滤器
  2. // 对原数组进行拷贝,同时保留满足回调函数中条件的那些值。
  3. // 因此,filter方法不对原数组操作,是无害的
  4. const words = [
  5. 'spray',
  6. 'limit',
  7. 'elite',
  8. 'exuberant',
  9. 'destruction',
  10. 'present',
  11. ];
  12. const result = words.filter((word) => word.length > 6);
  13. console.log(result);
  14. // expected output: Array ["exuberant", "destruction", "present"]
  15. console.log(words);
  16. // filter示例
  17. const fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
  18. const iptEle = document.getElementById('fruit');
  19. const dataListEle = document.getElementById('fruit-choose');
  20. // 当text-input的值改变时 会触发input事件
  21. iptEle.addEventListener('input', function () {
  22. let iptVal = iptEle.value; // 获取当前输入框的值
  23. let chooseFruits = fruits.filter((f) => f.includes(iptVal));
  24. // 每一次添加option的时候 记得清空上次结果
  25. dataListEle.innerHTML = '';
  26. chooseFruits.forEach((f) => {
  27. // 然后再创建新的option标签,并添加给datalist
  28. // 下面代码有性能问题?回流 与 重绘
  29. // 尽量避免在循环中动态的一个一个的向页面中添加元素,因为会频繁引起回流,引起性能问题
  30. let optionEle = document.createElement('option');
  31. optionEle.value = f;
  32. dataListEle.append(optionEle);
  33. });
  34. });