Javascript中对象数组中的搜索值
在以下场景中,如何搜索Javascript中对象数组中的搜索值,javascript,Javascript,在以下场景中,如何搜索标签和值 var countries = [ { label: 'United Kingdom', value: '44', group: "Europe" }, { label: 'United States', value: '1', group: "North America" }, { label: 'Norway', value: '47', group: "Europe" }, { label: 'Sweden', value:
标签
和值
var countries = [
{ label: 'United Kingdom', value: '44', group: "Europe" },
{ label: 'United States', value: '1', group: "North America" },
{ label: 'Norway', value: '47', group: "Europe" },
{ label: 'Sweden', value: '46', group: "Europe" },
{ label: 'Germany', value: '49', group: "Europe" }
];
text = 'uni';// Works fine since 'uni' is present in label
text = '44' // Should lookup value as well and return 'United Kingdom'
var suggestions = countries.filter(n => n.label.toLowerCase().includes(text));
console.log(suggestions);
只需将或语句放入过滤器即可
var suggestions = countries.filter(n => n.label.toLowerCase().includes(text) || n.value.toLowerCase().includes(text));
只需将或语句放入过滤器即可
var suggestions = countries.filter(n => n.label.toLowerCase().includes(text) || n.value.toLowerCase().includes(text));
只需使用and(&&)操作符,我还建议将“建议”作为一种方法,使用两个参数并获取正确的项
num = '46';
text = 'Sweden';
var suggestions = countries.filter(n => RegExp(text,'i').test(n.label) && n.value == num);
只需使用and(&&)操作符,我还建议将“建议”作为一种方法,使用两个参数并获取正确的项
num = '46';
text = 'Sweden';
var suggestions = countries.filter(n => RegExp(text,'i').test(n.label) && n.value == num);
试试这个
var countries = [
{ label: 'United Kingdom', value: '44', group: "Europe" },
{ label: 'United States', value: '1', group: "North America" },
{ label: 'Norway', value: '47', group: "Europe" },
{ label: 'Sweden', value: '46', group: "Europe" },
{ label: 'Germany', value: '49', group: "Europe" }
];
text = '44';
var suggestions = countries.filter(n => {
if(n.label.toLowerCase().includes(text)) {
return true;
}
if (n.value.includes(text)) {
return true;
}
return false;
});
console.log(suggestions);
试试这个
var countries = [
{ label: 'United Kingdom', value: '44', group: "Europe" },
{ label: 'United States', value: '1', group: "North America" },
{ label: 'Norway', value: '47', group: "Europe" },
{ label: 'Sweden', value: '46', group: "Europe" },
{ label: 'Germany', value: '49', group: "Europe" }
];
text = '44';
var suggestions = countries.filter(n => {
if(n.label.toLowerCase().includes(text)) {
return true;
}
if (n.value.includes(text)) {
return true;
}
return false;
});
console.log(suggestions);
只需使用
或
条件,以下代码将适用于标签、值、组
var国家=[
{标签:'联合王国',价值:'44',集团:'欧洲'},
{标签:“美国”,值:“1”,组:“北美”},
{标签:“挪威”,价值:“47”,集团:“欧洲”},
{标签:'瑞典',价值:'46',集团:'欧洲'},
{标签:“德国”,值:“49”,组:“欧洲”}
];
text=‘欧洲’;//作品
text='uni'//有效
text=44//works
var建议=国家/地区。筛选器(n=>{
报税表(
n、 label.toLowerCase().includes(文本)||
n、 group.toLowerCase().includes(文本)||
n、 值。包括(文本)
)
});
控制台日志(建议)代码>只需使用或
条件,以下代码将适用于标签、值、组
var国家=[
{标签:'联合王国',价值:'44',集团:'欧洲'},
{标签:“美国”,值:“1”,组:“北美”},
{标签:“挪威”,价值:“47”,集团:“欧洲”},
{标签:'瑞典',价值:'46',集团:'欧洲'},
{标签:“德国”,值:“49”,组:“欧洲”}
];
text=‘欧洲’;//作品
text='uni'//有效
text=44//works
var建议=国家/地区。筛选器(n=>{
报税表(
n、 label.toLowerCase().includes(文本)||
n、 group.toLowerCase().includes(文本)||
n、 值。包括(文本)
)
});
控制台日志(建议)代码>
我想我理解的是,您只需要设置&&
或|
语句,并为标签设置条件
我想我理解的是,您只需要设置&&
或|
语句,并为标签设置条件。您可以使用对象。值和一些
和包括
var国家=[{标签:'英国',值:'44',集团:“欧洲”},{标签:'美国',值:'1',集团:“北美”},{标签:'挪威',值:'47',集团:“欧洲”},{标签:'瑞典',值:'46',集团:“欧洲”},{标签:'德国',值:'49',集团:“欧洲”};
const suggestions=searchTerm=>countries.filter(n=>Object.values(n).some(value=>value.toLowerCase().includes(searchTerm));
控制台日志(建议(“uni”));
控制台日志(建议(“44”)
您可以使用对象。值
和一些
和包括
var国家=[{标签:'英国',值:'44',集团:“欧洲”},{标签:'美国',值:'1',集团:“北美”},{标签:'挪威',值:'47',集团:“欧洲”},{标签:'瑞典',值:'46',集团:“欧洲”},{标签:'德国',值:'49',集团:“欧洲”};
const suggestions=searchTerm=>countries.filter(n=>Object.values(n).some(value=>value.toLowerCase().includes(searchTerm));
控制台日志(建议(“uni”));
控制台日志(建议(“44”)
您可以使用所有值执行模糊搜索
。将所有值转换为word,然后进行匹配
有用的方法:Object.values
,filter
const fuzzySearch=(国家,txt)=>{
返回国家/地区。筛选器((国家/地区)=>{
const word=Object.values(country.join)(“”);
返回word.toLowerCase().includes(txt);
});
};
常量国家=[
{标签:“联合王国”,价值:“44”,集团:“欧洲”},
{标签:“美国”,价值:“1”,集团:“北美”},
{标签:“挪威”,价值:“47”,集团:“欧洲”},
{标签:“瑞典”,价值:“46”,集团:“欧洲”},
{标签:“德国”,价值:“49”,集团:“欧洲”},
];
const suggestions=(关键字)=>fuzzySearch(国家,关键字);
控制台日志(建议(“uni”));
控制台日志(建议(“44”)
您可以使用所有值执行模糊搜索
。将所有值转换为word,然后进行匹配
有用的方法:Object.values
,filter
const fuzzySearch=(国家,txt)=>{
返回国家/地区。筛选器((国家/地区)=>{
const word=Object.values(country.join)(“”);
返回word.toLowerCase().includes(txt);
});
};
常量国家=[
{标签:“联合王国”,价值:“44”,集团:“欧洲”},
{标签:“美国”,价值:“1”,集团:“北美”},
{标签:“挪威”,价值:“47”,集团:“欧洲”},
{标签:“瑞典”,价值:“46”,集团:“欧洲”},
{标签:“德国”,价值:“49”,集团:“欧洲”},
];
const suggestions=(关键字)=>fuzzySearch(国家,关键字);
控制台日志(建议(“uni”));
控制台日志(建议(“44”)代码>n=>n.label.toLowerCase().includes(text)| | n.value==text
?将行更改为-var-suggestions=countries.filter(n=>(n.label.toLowerCase().includes(text)+n.value.toLowerCase().includes(text))代码>n=>n.label.toLowerCase().includes(text)| | n.value==text
?将行更改为-var-suggestions=countries.filter(n=>(n.label.toLowerCase().includes(text)+n.value.toLowerCase().includes(text))代码>