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