如何根据匹配的对象键获取平均值

我有一个对象数组,我需要根据几个条件获得结果。如果 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)"}

}]


斯蒂芬大帝
浏览 135回答 1
1回答

慕尼黑5688855

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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript