Javascript 在对象中搜索

Javascript 在对象中搜索,javascript,reactjs,Javascript,Reactjs,在react中,我有一个对象 { {name: 'Colombia', code: 'CO'}, {name: 'Comoros', code: 'KM'}, {name: 'Congo', code: 'CG'}, ...} 我需要在那里搜索用户正在键入的元素(我从输入字段中获取)。在用户写下每个字母后,我需要将其与所有名称进行比较,并找到该部分的所有名称假设您意外地使用了大括号{}而不是方括号[]来表示问题中的数组,并且假设您可以使用ES6功能,您可以使用和: 如果在组件的rende

在react中,我有一个对象

{
 {name: 'Colombia', code: 'CO'},
 {name: 'Comoros', code: 'KM'},
 {name: 'Congo', code: 'CG'},
...}

我需要在那里搜索用户正在键入的元素(我从输入字段中获取)。在用户写下每个字母后,我需要将其与所有名称进行比较,并找到该部分的所有名称

假设您意外地使用了大括号
{}
而不是方括号
[]
来表示问题中的数组,并且假设您可以使用ES6功能,您可以使用和:


如果在组件的
render
函数中使用此函数,并在某处渲染生成的
matchingCountries
数组,则当
this.state.search
更新时,组件将响应性更新。

假设您意外使用了大括号
{}
,而不是括号
[]
要表示问题中的数组,并假设您可以使用ES6功能,您可以使用和:


如果在组件的
render
函数中使用此函数,并在某处渲染生成的
matchingCountries
数组,则当
this.state.search
更新时,组件将响应性地更新。

我已自由更正了您的数据类型:

data = [{name: 'Congo', code: 'CG'}, ...]
因为您提供的版本只会抛出错误

var data = [{name: 'Congo', code: 'CG'}];

...

handleKeyPress = (event) => {
    var value = this.event.target.value.toLowerCase(),
        matches = data.filter(function (item) {
            return item.name.substring(0, value.length).toLowerCase() === value;
        });

    console.log(matches)
}
render: function(){
     return(
         <div>
           <input type="text" onKeyPress={this.handleKeyPress} />
        </div>
     );
}
var data=[{name:'Congo',code:'CG'}];
...
handleKeyPress=(事件)=>{
var value=this.event.target.value.toLowerCase(),
matches=数据。筛选器(函数(项){
返回item.name.substring(0,value.length).toLowerCase()==value;
});
console.log(匹配项)
}
render:function(){
返回(
);
}

很抱歉,我的反应技能真的很差,所以可能有比
event.target.value
更好的方法来访问输入值

我已冒昧更正了您的数据类型:

data = [{name: 'Congo', code: 'CG'}, ...]
因为您提供的版本只会抛出错误

var data = [{name: 'Congo', code: 'CG'}];

...

handleKeyPress = (event) => {
    var value = this.event.target.value.toLowerCase(),
        matches = data.filter(function (item) {
            return item.name.substring(0, value.length).toLowerCase() === value;
        });

    console.log(matches)
}
render: function(){
     return(
         <div>
           <input type="text" onKeyPress={this.handleKeyPress} />
        </div>
     );
}
var data=[{name:'Congo',code:'CG'}];
...
handleKeyPress=(事件)=>{
var value=this.event.target.value.toLowerCase(),
matches=数据。筛选器(函数(项){
返回item.name.substring(0,value.length).toLowerCase()==value;
});
console.log(匹配项)
}
render:function(){
返回(
);
}

很抱歉,我的反应技能真的很差,所以可能有比
event.target.value
更好的方法来访问输入值

您想使用
filter()
includes()

a=[{
名称:“刚果”,
代码:“CG”
},
{
名称:“法国”,
代码:“FR”
}
];
document.getElementById('foo')。addEventListener('keyup',e=>{
让val=e.target.value.toLowerCase();
让matches=a.filter(v=>v.name.toLowerCase().includes(val));
console.log(匹配项);
});

您想使用
过滤器()
包含()

a=[{
名称:“刚果”,
代码:“CG”
},
{
名称:“法国”,
代码:“FR”
}
];
document.getElementById('foo')。addEventListener('keyup',e=>{
让val=e.target.value.toLowerCase();
让matches=a.filter(v=>v.name.toLowerCase().includes(val));
console.log(匹配项);
});

根据搜索字符串过滤内容,如

var data=[{name:'科摩罗',code:'科摩罗',{name:'刚果',code:'刚果',{name:'刚果民主共和国',code:'刚果',code:'库克群岛',code:'库克群岛',{name:'哥斯达黎加',code:'铬'},{name:'科特迪瓦',code:'科特迪瓦',{name:'克罗地亚',code:'人力资源'},{name:'古巴',code:'CU'},{name:'塞浦路斯',code:'CY'}]
var搜索='om';
var filterData=data.filter(item=>item.name.includes(search));

console.log(filterData)根据搜索字符串筛选内容,如

var data=[{name:'科摩罗',code:'科摩罗',{name:'刚果',code:'刚果',{name:'刚果民主共和国',code:'刚果',code:'库克群岛',code:'库克群岛',{name:'哥斯达黎加',code:'铬'},{name:'科特迪瓦',code:'科特迪瓦',{name:'克罗地亚',code:'人力资源'},{name:'古巴',code:'CU'},{name:'塞浦路斯',code:'CY'}]
var搜索='om';
var filterData=data.filter(item=>item.name.includes(search));

console.log(filterData)这不是数组,而是嵌套对象。它也是无效语法。是的,你是对的。那么它是数组还是嵌套对象?你能给出一个实际对象的例子吗?您发布的内容仍然是无效的object@RobM. 看起来像这样。{姓名:'科摩罗',代码:'科摩罗',{姓名:'刚果',代码:'刚果',{姓名:'刚果民主共和国',代码:'刚果',{民主共和国',{姓名:'库克群岛',代码:'捷克',{姓名:'哥斯达黎加',代码:'科特迪瓦',代码:'科特迪瓦',{姓名:'克罗地亚',代码:'人权',{姓名:'古巴',代码:'CU姓名:'塞浦路斯',{代码:'CY,这不是数组,而是嵌套对象。它也是无效语法。是的,你是对的。那么它是数组还是嵌套对象?你能给出一个实际对象的例子吗?您发布的内容仍然是无效的object@RobM. 看起来像这样。{姓名:'科摩罗',代码:'科摩罗',{姓名:'刚果',代码:'刚果',{姓名:'刚果民主共和国',代码:'刚果',{民主共和国',{姓名:'库克群岛',代码:'捷克',{姓名:'哥斯达黎加',代码:'科特迪瓦',代码:'科特迪瓦',{姓名:'克罗地亚',代码:'人权',{姓名:'古巴',代码:'CU姓名:'塞浦路斯',{代码:'CY,不幸的是,使用你的代码时,我遇到了一个错误。你能看看代码吗?错误是./js/app.js模块构建失败时出错:语法错误:意外标记(35:17)>35 | handleKeyPress=(事件)=>{^36 | var value=this.event.target.value.toLowerCase(),37 | matches=data.filter(函数(项){38 |返回项.name.substring(0,value.length).toLowerCase()===value;为什么在渲染后需要函数?很遗憾,使用您的代码,我得到了