【问题标题】:I want to get the total of 'No of vacancy column'我想得到 \'No of vacancy column\' 的总数
【发布时间】:2023-01-15 05:47:27
【问题描述】:

我想计算“No of vacancy column”值的总和,那么如何写一个函数或逻辑来计算呢?

const [vacancy, setVacancy] = useState([]); 

console.log(vacancy[0].noOfVacancy) gives the first index output, but I put the for loop and try to get all the values, but its gives an error.

最后,我想得到“No of vacancy column values”的总和/总计

看这个截图:

enter image description here

import React, { useEffect, useState, useRef } from "react";
import axios from "axios";
import jwt_decode from "jwt-decode";
import { useReactToPrint } from "react-to-print";
import image from "../../../images/back1.jpg";

export default function GenerateVacancyReport() {
  const componentRef = useRef();
  const handlePrint = useReactToPrint({
    content: () => componentRef.current,
  });

  const [vacancy, setVacancy] = useState([]);
  const [filteredResults, setFilteredResults] = useState([]);
  const [searchInput, setSearchInput] = useState("");
  const [companyName, setCompanyName] = useState("");

  useEffect(() => {
    const userToken = localStorage.userToken;
    const decoded = jwt_decode(userToken);
    setCompanyName(decoded.name);
    let name = companyName;
    console.log(name);
    axios
      .get(`http://localhost:5000/vacancy/get/name/${name}`)
      .then((response) => {
        setVacancy(response.data.exsitingVacancies);
      });
  }, [companyName]);

  //search record

  const searchItems = (searchValue) => {
    setSearchInput(searchValue);
    if (searchInput !== "") {
      const filteredData = vacancy.filter((item) => {
        return Object.values(item)
          .join("")
          .toLowerCase()
          .includes(searchInput.toLowerCase());
      });
      setFilteredResults(filteredData);
    } else {
      setFilteredResults(vacancy);
    }
  };

【问题讨论】:

  • 错误是什么?

标签: javascript reactjs


【解决方案1】:

下面的代码应该可以解决问题

 useEffect(() => {
    useEffect(() => {
    let sumVacancies = 0;
    for(let i = 0; i < vacancy.length; i++){

     sumVacancies += +vacancy[i].noOfVacancy;
   
     setTotal(sumVacancies);
    }
    setTotal(sum);
    }, [vacancy])

或使用减少功能

const [total, setTotal] = useState(0);

useEffect(() => {
let sum = vacancy.reduce((prev,curr) => +prev.noOfVacancy + 
+curr.noOfVacancy)
setTotal(sum);
}, [vacancy])

您可以从total访问总和值

【讨论】:

  • 你编辑的一个不起作用
  • 我刚刚编辑它,你需要添加一个 + 号,因为进来的值可能是字符串
  • 好的,感谢您的建议,在这里我将这些值存储为数字。这样我在上一个中就没有得到任何错误。
  • 我加回了您可以使用的第一个答案,第二个答案应该与 + 号一起使用,让我知道,因为我很好奇如果它实际上是数字,为什么它不起作用
猜你喜欢
  • 2016-12-28
  • 2018-04-19
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2018-01-02
  • 2013-08-11
  • 2015-07-21
  • 1970-01-01
相关资源
最近更新 更多