Javascript 如何获取嵌套在对象中的数组
我有一个对象数组,在这些对象中有一个嵌套对象,其中包含一个我试图计算的数组。它看起来像这样:Javascript 如何获取嵌套在对象中的数组,javascript,arrays,object,filter,Javascript,Arrays,Object,Filter,我有一个对象数组,在这些对象中有一个嵌套对象,其中包含一个我试图计算的数组。它看起来像这样: item = [ {firstName: "John" lastName: "Johnson" capabilities: {demographic: Array(3), geographic: Array(3), language: Array(2)} id: "ndja1-234-njk" state: LA } {firstName:
item = [
{firstName: "John"
lastName: "Johnson"
capabilities: {demographic: Array(3), geographic: Array(3), language: Array(2)}
id: "ndja1-234-njk"
state: LA
}
{firstName: "Jane"
lastName: "Johnson"
capabilities: {demographic: Array(3), geographic: Array(3), language: Array(2)}
id: "ndsa1-234-njk"
state: TX
}
]
const newList = (items, value) => {
let providerList = items.filter(i => i.firstName.includes(value) || i.lastName.includes(value) || i.phone.includes(value) || i.capabilites.geographic.includes(value));
setSearchResult(providerList)
};
我试图过滤对象列表,只返回与用户输入的firstname、lastname、phonenumber和geographic
匹配的对象。但由于地理位置不在数组的第一级,当我尝试像这样过滤它时,我会得到一个错误,它说is is is null:
item = [
{firstName: "John"
lastName: "Johnson"
capabilities: {demographic: Array(3), geographic: Array(3), language: Array(2)}
id: "ndja1-234-njk"
state: LA
}
{firstName: "Jane"
lastName: "Johnson"
capabilities: {demographic: Array(3), geographic: Array(3), language: Array(2)}
id: "ndsa1-234-njk"
state: TX
}
]
const newList = (items, value) => {
let providerList = items.filter(i => i.firstName.includes(value) || i.lastName.includes(value) || i.phone.includes(value) || i.capabilites.geographic.includes(value));
setSearchResult(providerList)
};
我相信这是因为地理值在对象中的位置,但我不知道如何处理等待它不为空。在添加地理或语句之前,此函数一直有效。尝试此解决方案。
这可能是一个问题,因为有些对象不包含功能
const newList = (items, value) => {
let providerList = items.filter(i => i.firstName.includes(value) || i.lastName.includes(value) || i.phone.includes(value) || i.capabilites.geographic && i.capabilites.geographic.includes(value));
setSearchResult(providerList)
};
你打错了。使用i.capabilites
而不是i.capabilites
检查字符串时是否确实要使用包含
?正如'hello'。includes('o')
是正确的。使用includes
的替代方法是什么?我现在意识到这不是最好的逻辑检查它们是否相同?这很有效!我明白为什么,谢谢你的回复!您也可以这样使用:i.capabilites.geographic?.includes(value)
。如果存在,它将调用该方法,否则返回undefined