如何获取嵌套在对象内的数组

时间:2020-10-20 19:53:25

标签: 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: "Jane"
 lastName: "Johnson"
 capabilities: {demographic: Array(3), geographic: Array(3), language: Array(2)}
id: "ndsa1-234-njk"
state: TX
}
]

我试图过滤对象列表,仅返回与用户输入的名字,姓氏,电话号码和geographic相匹配的对象。但是因为地理不在数组的第一层,所以当我尝试像这样通过它进行过滤时,我得到一个错误,该错误为null:

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)
  };

我相信这是因为地理值在对象中的位置,但是我不确定如何处理等待它不为null的情况。在添加地理OR语句之前,此功能一直有效。

2 个答案:

答案 0 :(得分:1)

尝试此解决方案。 这可能是因为某些对象没有包含capabilities的问题。

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)
  };

答案 1 :(得分:0)

您有错字。代替i.capabilites使用i.capabilities

相关问题