如何对数组中的属性值求和并乘以常数值

时间:2019-07-22 18:47:39

标签: reactjs

我正在尝试创建一个简单的工资计算器应用程序,该应用程序接受输入{name:'',contact:'',designation:''},然后求和{name:''}的输入数量。然后将所得的总数与常数{wages = 2,500}相乘,得出最终的总数。

我已经编写了接受和显示新输入的代码,然后将此新输入添加到现有状态。但是我不知道该怎么做,仅将名称属性加起来,然后乘以一个常数值。

class Test extends Component {
  constructor(props){
super(props);
this.state={
  wages:0,
  totalWages: 0,
  workers:[
{
  id:uuid(),
  name:'James',
  contact:'08087453758',
  Desig:'Carpenter'
},
{
  id:uuid(),
  name:'Eric',
  contact:'08145653605',
  Designation:'Carpenter'
}

    ]
}


  }
  render() {
    const{workers}=this.state;

    return (
      <Container>
    <Button

    style={{marginBottom:'2rem'}}
    color='dark'
    onClick={()=>{

      const name=prompt('Enter the name of a new worker');
      if(name){
        this.setState(state=>({ workers:[...state.workers, {id:uuid(),name}]}))
      }
    }}
    >
    Add Worker
    </Button>    
    <ListGroup>
      {workers.map(({id,name})=>(
         <CSSTransition
         key={id}
         timeout={500}
         >
           <ListGroupItem>

             {name}
           </ListGroupItem>


        </CSSTransition>
      )

      )}

      </ListGroup>   


      </Container>

    )
  }
}

我需要输入的总和,与更新状态一起显示

2 个答案:

答案 0 :(得分:0)

要获取名称总数,请使用reduce方法

workers.reduce((a, b) => ({names: a.name + b.name}));

答案 1 :(得分:0)

让我们假设以下数组:

const items = [
    {id: 1, value: 23},
    {id: 2, value: 45},
    {id: 3, value: 60}
]

要汇总所有value个属性,然后乘以2500

const items = [
        {id: 1, value: 23},
        {id: 2, value: 45},
        {id: 3, value: 60}
]
const total = items.map(x => x.value).reduce((a,c) => a + c) * 2500
console.log(total) // (23 + 45 + 60) * 2500 => 128 * 2500 => 320000