【发布时间】:2018-09-21 10:19:50
【问题描述】:
我正在尝试创建一个使用函数返回对象数组的自动完成功能。我的对象是这样的:
this.vehiclesList =
[
{
"additionalDriverContacts": [9929929929, 9992992933, 9873773777],
"id": 1
},
{
"additionalDriverContacts": [8388388388, 8939939999],
"id": 2
}
]
我想根据 additionalDriverContacts 过滤数组。
我的功能是这样的:
filterVehicleAdditionalMobile(val: string) {
if (typeof val != 'string') {
return [];
}
let value= val? this.vehiclesList.filter((item) => {
if(item.additionalDriverContacts)
item.additionalDriverContacts.forEach((option)=> {
String(option).toLowerCase().indexOf(val.toLowerCase()) != -1
})
}
}) : this.vehiclesList;
console.log(value)
return value;
}
但是在控制台中的值是空数组。我哪里做错了。我尝试在这个问题中寻找解决方案How do i filter an array inside of a array of objects? 但它没有帮助,因为我的用例不同。
我想要的结果应该是: 如果 99299 作为参数传递给 function ,则与该数字匹配的 additionalDriverContacts 应作为数组返回。 对于输入 99299,应返回 result = [9929929929,9992992933]
【问题讨论】:
-
请注意,您最初拥有
this.vehicleList,但您的代码后来使用: this.vehiclesList- 额外的s。此外,您的String(option)..行是一个孤立的表达式。 -
代码中的任何地方都没有 JSON。它是一个 JavaScript 对象。我会一直指出这一点,直到我死的那一天。
-
感谢您指出错误。我更新了它
-
@ChrisG 已编辑。谢谢
-
你的过滤器没有返回任何东西,所以一切都被认为是假的,然后你什么也得不到:)
标签: javascript angular ecmascript-6 functional-programming