.map()参数未定义

时间:2019-09-23 09:40:38

标签: javascript reactjs

我有一个包含数据的数组,我想将数据与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
        })
}

7 个答案:

答案 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);
}