Javascript .map()参数未定义
我有一个包含数据的数组,我想将数据与event.target.value进行比较 当它是相同的值时,我希望它能够获得关于数组中该位置的数据的更多信息 它说角色没有定义,我想这是一个范围问题,但我不知道如何解决它 log(character.mass,character.height)用于测试目的Javascript .map()参数未定义,javascript,reactjs,Javascript,Reactjs,我有一个包含数据的数组,我想将数据与event.target.value进行比较 当它是相同的值时,我希望它能够获得关于数组中该位置的数据的更多信息 它说角色没有定义,我想这是一个范围问题,但我不知道如何解决它 log(character.mass,character.height)用于测试目的 handleClick(event){ event.preventDefault(); const CharacterDataArray = this.props.Ch
handleClick(event){
event.preventDefault();
const CharacterDataArray = this.props.CharacterData.results
console.log(CharacterDataArray)
if(CharacterDataArray.map(character => character.name === event.target.value)) {
console.log(character.mass, character.height)
}
this.setState({
CharacterName: event.target.value
})
}
您需要使用箭头函数来解决scop问题,如
handleClick =(event)=>{
// your code goes here
}
或者可以在构造函数中绑定click事件,如
constructor () {
this.handleClick = this.handleClick.bind(this);
}
除了使用
.map
之外,您还可以使用.some
作为参考,您可以转到以下链接:
问题是,
字符
仅在映射
的回调函数中定义
请尝试以下方法:
// Look through all characters and return it if the name matches
const matchingChar = CharacterDataArray.find(character => character.name === event.target.value)
// Log if a match has been found
if (matchingChar) {
console.log(matchingChar.mass, matchingChar.height);
}
使用
find
方法查找字符.name
等于事件.target.value
的字符
const hasValue = CharacterDataArray.find(character => character.name === event.target.value)
if(hasValue) {
// write your logic
}
首先需要使用arrow函数,因为在arrow函数中可以访问“this”,其次需要检查数组是否为空
handleClick = (event) => {
event.preventDefault();
if(this.props.CharacterData.results && this.props.CharacterData.results.length > 0) {
if(this.props.CharacterData.results.map(character => character.name === event.target.value)) {
console.log(character.mass, character.height)
}
this.setState({
CharacterName: event.target.value
})
}
}
试试这个:-
CharacterDataArray.map((character) => {
if (character.name === event.target.value))
{
console.log(character.mass, character.height)
}
})
还可以添加console.log(CharacterDataArray)的结果吗?为什么要在if语句中使用
map
的结果作为条件?是否检查空数组?字符
仅在map()中使用。您尝试在if
语句中对其进行console.log。这就是为什么它没有定义。@byxor我这样做是因为我想返回this.state,但不知道它是否正确?你能推荐一个forEach()吗?我在下面的帖子中使用了@sandrooco的解决方案,结果是可选的箭头函数。谢谢你的帮助!如果您的this.props
无法访问,则必须将您更改为箭头函数
例如:handleClick=()=>{…}
此功能有效@sandrooco,箭头功能是可选的,双向工作。谢谢preventDefault()
不返回任何承诺吗?其他代码将抛出一个错误。。。(result
是数组,而不是对象)。
CharacterDataArray.map((character) => {
if (character.name === event.target.value))
{
console.log(character.mass, character.height)
}
})