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