带回调函数的过滤数组

filter array with callback function

我在使用此功能搜索程序名称时遇到了一些问题,这些名称可以限制实现回调函数的输出数量。希望你能帮我弄清楚

function filteritem(str,num,callback){
  let result = name.filter( name => name.indexOf(str) !== -1 )
   result.forEach(element => element.length == num)
  callback(result);
}
function showFilter(wrd){
  console.log(wrd);
}
console.log(filteritem("a",3,showFilter))

我的输出是:

[
  'Abigail',  'Alexandra',
  'Amanda',   'Angela',
  'Bella',    'Carol',
  'Caroline', 'Carolyn',
  'Diana',    'Elizabeth',
  'Ella',     'Faith',
  'Olivia'
]
undefined

我想要的输出是:

["Abigail", "Alexandra", "Alison"];

const name = [
  "Abigail",
  "Alexandra",
  "Amanda",
  "Angela",
  "Bella",
  "Carol",
  "Caroline",
  "Carolyn",
  "Diana",
  "Elizabeth",
  "Ella",
  "Faith",
  "Olivia",
];
function filteritem(str, num, callback) {
  let result = name.filter((name) => name.indexOf(str) !== -1);
  result = result.slice(0, 3);
  callback(result);
}
function showFilter(wrd) {
  console.log(wrd);
}
filteritem("a", 3, showFilter);

您希望通过 forEach 通话实现什么目标?您正在遍历结果数组,实际上什么都不做(您的函数 return 是一个布尔值:如果长度 == 3 则为真,否则为假)。

你想要做的是 return 结果的前 3 个元素:

callback(result.slice(0, 3));