亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Reactjs,如何構造一個特定的json來增加每月之間的金額

Reactjs,如何構造一個特定的json來增加每月之間的金額

阿晨1998 2022-08-04 09:54:40
我從我的API中獲取了以下數據:dataN[{...}, {...}, {...}, {...}, {...}]有關每個內部的更多詳細信息:{...}{ date: "2018-01-01" import: 1},{ date: "2018-03-03" import: "10"},{ date: "2018-03-20" import: 10},{ date: "2020-05-01" import: 10},{ date: "2020-05-02" import: 10},{ date: "2020-05-03" import: 10},我有一個函數工作,它提取所有發現的月份和年份,結果如下:陣列: [“2018-01”, “2018-03”, “2020-05”, .....]使用此數組,我有另一個函數(工作),它在日期之間查找,并給我多少次操作是在給定日期之前完成的。示例:在年份和月份:2018-01,我只有1次操作,結果將是:{ date: "2018-01-01" import: 1},例如:“2020-05”我有3個操作,因此結果將是:{日期:“2020-05-01”導入:10},{ date: "2020-05-02" import: 10},{ date: "2020-05-03" import: 10},現在我已經每個月執行一次操作并按年排序,我想添加該月執行的金額。我的目標是每個月和每個年添加所有金額(它始終是一個數字)(每個月都有一個總金額)示例:“2018-01”進口“2018-03”進口日期2020-03-03 +進口日期2020-03-20“2018-05”進口日期2020-05-01 +進口日期2020-05-01 +進口日期:“2020-05-03最終的 json:{date : "2018-01"import : 1},{date : "2018-03"import : 20},{date : "2018-05"import : 30}我有這個代碼,但我真的不知道根據需要獲取:我真的會接受任何幫助。//["2018-01", "2018-02", "2018-03", "2018-04", "2018-05", .....]        var Total = 0;        array.forEach(function(item){            //console.log(item)            var a = moment(item);            var start = a.format('YYYY-MM-DD')            var b = a.add(30, 'days');            var end = b.format('YYYY-MM-DD')            console.log("procesing search between date : ",start , " and last date: ", end)            DataFromApi.forEach((value, key) => {                var EntreFechas = moment(value.compra_fecha_oper).isBetween(String(start), String(end) ); // true                if ( EntreFechas === true && value.estado == "Finalizado" && value.moneda_crypto == TipoCrypto ){                    console.log(key, " Value Date: ",value.compra_fecha_oper ,"Has result: ",  EntreFechas)                    if (value.estado == "Finalizado" && value.moneda_crypto == TipoCrypto){                        var jsonObjFinalizadas =                         {                         "fecha": value.compra_fecha_oper,                        "importe":Total += parseFloat(value.compra_en_fiat),                        }
查看完整描述

1 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

我已經完成了一個要求,如下所示。請嘗試此示例并實現其他示例。


import React, {Component} from "react";


export default class JsonExample extends Component {


    state = {

        updatedJson: []

    };


    json = [

        {date: "2018-01-01", import: "XXX <--number"},

        {date: "2018-03-03", import: "XXX<--number"},

        {date: "2018-03-20", import: "XXX<--number"},

        {date: "2018-03-25", import: "XXX<--number"},

        {date: "2020-05-01", import: "XXX<--number"},

        {date: "2020-05-02", import: "XXX<--number"},

        {date: "2020-05-03", import: "XXX<--number"},

    ];


    componentDidMount() {

        let updatedJson = [];

        this.json.map(value => {

            let d = new Date(value.date);

            let yearMonth = ("0" + (d.getMonth() + 1)).slice(-2) + "-" + d.getFullYear();

            updatedJson.push(yearMonth);

        });

        this.setState({updatedJson: updatedJson});

    }


    render() {

        return (

            <div>

                {JSON.stringify(this.state.updatedJson)}

            </div>

        );

    }

}

根據要求更新了完整代碼


import React, {Component} from "react";


export default class JsonExample extends Component {


    state = {

        monthlyData: [],

        sortedData: [],

        monthlyTotalImport: []

    };


    json = [

        {date: "2018-01-01", import: 7},

        {date: "2018-01-21", import: 1},

        {date: "2018-03-03", import: 10},

        {date: "2018-03-20", import: 10},

        {date: "2020-05-01", import: 10},

        {date: "2017-12-01", import: 5},

        {date: "2020-05-02", import: 10},

        {date: "2020-05-03", import: 10},

    ];


    componentDidMount() {

        let data = [];

        this.json.map(value => {

            let d = new Date(value.date);

            data.push({...value, date2: d});

        });


        let sortedData = data.sort((a, b) => a.date2 - b.date2);

        console.log(sortedData, 'sorted');


        let monthlyData = [];

        sortedData.map(value => {

            let d = new Date(value.date);

            let yearMonth = ("0" + (d.getMonth() + 1)).slice(-2) + "-" + d.getFullYear();

            monthlyData.push({...value, yearMonth: yearMonth});

        });

        console.log(monthlyData, 'monthly data');


        let result = monthlyData.reduce((acc, item) => ({

            ...acc,

            [item.yearMonth]: (acc[item.yearMonth] || 0) + item.import

        }), {});

        this.setState({monthlyTotalImport: result});

        console.log(result, 'result');

    }


    render() {

        return (

            <div>

                {JSON.stringify(this.state.monthlyTotalImport)}

            </div>

        );

    }

}


查看完整回答
反對 回復 2022-08-04
  • 1 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號