Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取嵌套在对象中的数组_Javascript_Arrays_Object_Filter - Fatal编程技术网

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