Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.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_Ecmascript 6 - Fatal编程技术网

Javascript 如何在对象数组中搜索特定的匹配属性值?

Javascript 如何在对象数组中搜索特定的匹配属性值?,javascript,arrays,object,ecmascript-6,Javascript,Arrays,Object,Ecmascript 6,我只想在json对象列表的name属性中搜索。这是json数组- combinedArr = [ { lat: "36.1152", locality: "Worth Avenue, Unit A", long: "117.521", name: "Bazaar Cafe", postal_code: "20619", street_no: "45250", }, { lat: "31.21", locality: "A

我只想在json对象列表的
name
属性中搜索。这是json数组-

combinedArr = [
  {
    lat: "36.1152",
    locality: "Worth Avenue, Unit A",
    long: "117.521",
    name: "Bazaar Cafe",
    postal_code: "20619",
    street_no: "45250",
  },
  {
    lat: "31.21",
    locality: "Ambey Mantion",
    long: "119.7",
    name: "Ashley's Cafe",
    postal_code: "29087",
    street_no: "1B",
  },
];
这是搜索函数,这个搜索函数搜索对象的所有属性,但我只希望它只搜索
name
property并返回搜索结果列表。搜索功能如下所示-

  function findCaliforniaCafes(searchTerm) {
    const filterByValue = (combinedArr, string) => {
      return combinedArr.filter((o) =>
        Object.keys(o).some((k) =>
          o[k].toLowerCase().includes(string.toLowerCase())
        )
      );
    };

    const result = searchTerm
      ? filterByValue(combinedArr, searchTerm)
      : combinedArr;

    return result;
  }

您可以使用数组
filter()

这将返回一个数组,其中包含通过条件的所有元素

const searchFilter = "Bazaar Cafe"


const filtered = combinedArr.filter(item => item.name === searchFilter);

只需像这样使用
过滤器

const filtered = combinedArr.filter(({ name }) => name.includes("Ashley"));
const combinedar=[{lat:“36.1152”,地点:“沃思大道,A单元”,长:“117.521”,名称:“集市咖啡馆”,邮政编码:“20619”,街道编号:“45250”,},{lat:“31.21”,地点:“安贝·曼蒂翁”,长:“119.7”,名称:“阿什利咖啡馆”,邮政编码:“29087”,街道编号:“1B”};
const filtered=combinedar.filter(({name})=>name.toLowerCase().includes(searchTerm));
console.log(过滤)

作为控制台包装{max height:100%!important;top:auto;}
如果只想在名称中搜索,为什么要迭代所有对象键?只需检查
o.name
insteadUse
includes()
,而不是
=
const filtered=combinedArr.filter(({name}=>name.toLowerCase().includes(searchTerm))缺少一个括号!谢谢你的帮助!