如何检查数组中的每个项目?

问题描述 投票:0回答:2

我有一个对象数组,并在输入中呈现其中的每个项目,在本节下,我有一个执行某些操作的按钮

我想检查每个输入项是否为空,不要调用按钮上按下的功能

我的代码不适用于第一个对象,

状态

 toolsUsed: [
      {
        id: 0,
        name: '..',
        price: '..',
        count: '..',
      },
      {
        id: 1,
        name: '..',
        price: '..',
        count: '..',
      },
      ...
    ],
]

这是我的可迭代数组

renderToolsUsed = () => {
    const {toolsUsed} = this.state;

    return toolsUsed.map(({name, id, price, count}, i) => {
      console.log('i', i);
      if (
        toolsUsed[i].name.length > 0 &&
        toolsUsed[i].price.length > 0 &&
        toolsUsed[i].count.length > 0
      ) {
        this.setState({valid: true});
      }

      return(
         <View>.....</View>
      )
    }

按钮功能

 pressed = ()=>{
    if(this.state.vaild){
       call...
    }else{
        alert("please fill all fields");
    }
  }
javascript arrays reactjs loops
2个回答
0
投票

您的操作方式,它仅设置第一项的状态,调用setState触发重新渲染后,可能是您遇到了问题可能是Array.reduce会帮助您


0
投票

检查对象数组中除input之外的所有id是否等于''的一种方法>

renderToolsUsed = () => {
    return this.state.toolsUsed.map((item, index) => {
      delete item.id;
      if (Object.keys(item).every(key => item[key] !== '')) {
        ...
      }
      // If you want to use id later
      if (Object.keys(item).every(key => key === 'id' ? true : item[key] !== '')) {
      ...
      }

    }
© www.soinside.com 2019 - 2024. All rights reserved.