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

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

如何根據匹配的對象鍵獲取平均值

如何根據匹配的對象鍵獲取平均值

斯蒂芬大帝 2023-03-03 10:13:48
我有一個對象數組,我需要根據幾個條件獲得結果。如果 Object.Keys() 匹配且類型為整數,則返回這些值的平均值。如果 Object.keys() 匹配且類型為字符串,則返回出現次數的值。我在底部添加了 expectedResult,嘗試了一些方法,但發現很難得到想要的結果。期待一些有用的答案。謝謝let data = [{        baySize: {type: "integer", value: "180"},        bayAge: {type: "integer", value: "20"},        totalBays: {type: "integer", value: "30"},        bayType: {type: "string", value: "Brown"},        sprayed: {type: "boolean", value: "No"}        },        {        baySize: {type: "integer", value: "120"},        bayAge: {type: "integer", value: "30"},        totalBays: {type: "integer", value: "30"},        bayType: {type: "string", value: "Grey"},        sprayed: {type: "boolean", value: "No"}}]const result = data.map((item) => {  const intType = Object.keys(item).map((values) => {    return item[values].type == "integer" ? item[values].value : 0  })  const stringType = Object.keys(item).map((values) => {    return item[values].type == "string" ? item[values].value : 0  })  console.log(intType)  console.log(stringType)})let expectedResult = [{  baySize: {type: "integer", value: "300"},  bayAge: {type: "integer", value: "50"},  totalBays: {type: "integer", value: "60"},  bayType: {type: "string", value: "brown (1), Grey(1)"}}]
查看完整描述

1 回答

?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

let data = [{

        baySize: {

            type: "integer",

            value: "180"

        },

        bayAge: {

            type: "integer",

            value: "20"

        },

        totalBays: {

            type: "integer",

            value: "30"

        },

        bayType: {

            type: "string",

            value: "Brown"

        },

        sprayed: {

            type: "boolean",

            value: "No"

        }

    },

    {

        baySize: {

            type: "integer",

            value: "120"

        },

        bayAge: {

            type: "integer",

            value: "30"

        },

        totalBays: {

            type: "integer",

            value: "30"

        },

        bayType: {

            type: "string",

            value: "Grey"

        },

        sprayed: {

            type: "boolean",

            value: "No"

        }

    }

]

const intResult = {}

const strResult = {}

data.forEach(item => {

    Object.keys(item).forEach(key => {

        const innerItem = item[key]

        if (innerItem.type === 'integer') {

            if (!intResult.hasOwnProperty(key)) {

                intResult[key] = {

                    count: 1,

                    value: +innerItem.value

                }

            } else {

                intResult[key].count++

                intResult[key].value += (+innerItem.value)

            }

        } else {

            if (!strResult.hasOwnProperty(key)) {

                strResult[key] = {}

            }

            if (!strResult[key].hasOwnProperty(innerItem.value)) {

                strResult[key][innerItem.value] = 1

            } else {

                strResult[key][innerItem.value]++

            }


        }

    })

})

const resultObj = {}

Object.keys(intResult).forEach(key => {

    resultObj[key] = {

        type: 'integer',

        value: intResult[key].value / intResult[key].count + ''

    }

})


Object.keys(strResult).forEach(key => {

    let value = ''

    Object.keys(strResult[key]).forEach(subKey => {

        value += `${subKey}(${strResult[key][subKey]})`

    })

    resultObj[key] = {

        type: 'string',

        value

    }

})

console.log(resultObj)


查看完整回答
反對 回復 2023-03-03
  • 1 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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