Javascript 如何在对象数组中搜索特定的匹配属性值?
我只想在json对象列表的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
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
insteadUseincludes()
,而不是=
const filtered=combinedArr.filter(({name}=>name.toLowerCase().includes(searchTerm))代码>缺少一个括号!谢谢你的帮助!