我有一个包含数据的数组,我想将数据与event.target.value进行比较 当它是相同的值时,我希望它获得有关数组该位置的数据的更多信息。
它说字符没有定义,我想这是一个范围问题,但是我不知道如何解决。
console.log(character.mass,character.height)用于测试。
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
})
}
答案 0 :(得分:2)
您需要使用箭头功能解决
之类的范围问题 handleClick =(event)=>{
// your code goes here
}
或者您可以将
绑定到click事件中constructor () {
this.handleClick = this.handleClick.bind(this);
}
答案 1 :(得分:2)
问题在于,character
仅在map
的回调函数中定义。
尝试以下方法:
// 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);
}
答案 2 :(得分:0)
除了使用print (final_content)
[['Seba Beach, Alberta, TOE 2BO Canada', '(780) 429-3277'], ['5508 1st Street SE, Calgary, Alberta, Canada', '403 988-8140']]
之外,还可以使用.map
作为参考,您可以转到以下链接:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some
答案 3 :(得分:0)
使用find
方法来查找character.name
等于event.target.value
的字符。
const hasValue = CharacterDataArray.find(character => character.name === event.target.value)
if(hasValue) {
// write your logic
}
答案 4 :(得分:0)
首先,您需要使用箭头功能,因为在箭头功能中您可以访问“ 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
})
}
}
答案 5 :(得分:0)
尝试一下:-
CharacterDataArray.map((character) => {
if (character.name === event.target.value))
{
console.log(character.mass, character.height)
}
})
答案 6 :(得分:-1)
async handleClick(event){
await event.preventDefault();
let CharacterDataArray = this.props.CharacterData.results;
console.log(CharacterDataArray);
let result=CharacterDataArray.filter(character=>character.name === event.target.value);
console.log(result.mass, result.height);
}