Javascript 阵列内部的过滤器阵列?

Javascript 阵列内部的过滤器阵列?,javascript,Javascript,我有这样的结构: 现在我要做的是筛选项目并找到结果 这是我的。ts: search(event) { let b = this.autocompletedata.filter( a => a.items['item']? a.items['item'].startsWith(event.query) : false); console.log(b,'result'); } 有什么建议我做错了什么吗?我总是得到空结果尝试使用: search(event) {

我有这样的结构:

现在我要做的是筛选项目并找到结果

这是我的。ts:

search(event) {
    let b = this.autocompletedata.filter( a => a.items['item']? a.items['item'].startsWith(event.query) : false);
    console.log(b,'result');
}
有什么建议我做错了什么吗?我总是得到空结果

尝试使用:

 search(event) {
     let b;

     a.forEach(function(entry) {
         b = this.autocompletedata.filter( entry => entry['item']? entry['item'].startsWith(event.query) : false);
     });

     console.log(b,'result');
 }

不要对存储结果的变量和
filter()
内的私有函数中的变量使用相同的标识符
a
。好的,我更改了该标识符,但再次得到空结果,
filter()
函数需要一个布尔值。因此,如果您的项目不匹配,您应该返回
false
,而不是空字符串。我更新了。。。但它不起作用的实际原因是,
a.items['item']
始终是未定义的,因为
a.items
是一个数组,在括号内,您需要查找一些元素。您需要迭代
a.items
数组。这里的“a”是什么?
a
是您的数组this.autocompletedata.forEach(function(entry){b=this.autocompletedata.filter(entry=>entry['item']?entry['item'].startsWith(event.query):false);console.log(entry,'entry');});如果因为autocompletedata是我的数组而这样做,我会得到以下错误:类型“void”上不存在属性“autocompletedata”。