一个关于重构数组的问题

发布于 2022-09-07 00:07:52 字数 876 浏览 13 评论 0

下面有如下数组:

const fData = [

{ownerName: "大厦a", type: "服务类型1", total: 85}

{ownerName: "大厦a", type: "服务类型2", total: 22}

{ownerName: "大厦b", type: "服务类型1", total: 11}

{ownerName: "大厦b", type: "服务类型2", total: 11}

{ownerName: "大厦c", type: "服务类型1", total: 121}

{ownerName: "大厦c", type: "服务类型2", total: 11}
]

希望重构成如下数组:

[{ownerName: "大厦a", "服务类型1": 85, "服务类型2": 22}

{ownerName: "大厦b", "服务类型1": 11, "服务类型2": 11}

{ownerName: "大厦c", "服务类型1": 121, "服务类型2": 11}

我目前进行如下代码:

let newName = map(uniq(ownerName), (item) => {
            return {
                ownerName: item,
            };
        });
        let newType = map(uniq(type), (item) => {
            return {
                type: item,
            };
        });

其中uniq和map是引用的第三方lodash的库。
往下就不知道该如何写了。求指导,谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我是男神闪亮亮 2022-09-14 00:07:52
const fData = [
  { ownerName: "大厦a", type: "服务类型1", total: 85 },
  { ownerName: "大厦a", type: "服务类型2", total: 22 },
  { ownerName: "大厦b", type: "服务类型1", total: 11 },
  { ownerName: "大厦b", type: "服务类型2", total: 11 },
  { ownerName: "大厦c", type: "服务类型1", total: 121 },
  { ownerName: "大厦c", type: "服务类型2", total: 11 },
]

let tmpObj = {}
for (let item of fData) {
  if (!tmpObj[item.ownerName]) {
    tmpObj[item.ownerName] = {}
  }
  tmpObj[item.ownerName][item.type] = item.total
}
let result = Object.entries(tmpObj).map(item => {
  item[1]['ownerName'] = item[0]
  return item[1]
})


----

同type的total累加?

let tmpObj = fData.reduce((accumulator, currentValue, currentIndex, array) => {
  if (!accumulator[currentValue.ownerName]) {
    accumulator[currentValue.ownerName] = {}
  }
  if (!accumulator[currentValue.ownerName][currentValue.type]) {
    accumulator[currentValue.ownerName][currentValue.type] = 0
  }
  accumulator[currentValue.ownerName][currentValue.type] += currentValue.total
  return accumulator
}, {})
let result = Object.entries(tmpObj).map(item => {
  item[1]['ownerName'] = item[0]
  return item[1]
})
呆° 2022-09-14 00:07:52

设置一个map = {}
遍历fData
合并map[ownerName]信息
最后把map转成数组就好了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文