对动态数组对象进行分组并形成所需的对象

问题描述 投票:0回答:2

我有一个像这样的动态对象

var object = [
    "70669",
    "70669|9436",
    "70669|8353",
    "70669|8914",
    "70669|9522",
    "70669|8422",
    "70669|9639"
    ]

我的预期输出是这样的

[{
    stdSizeCode: [9436, 8353, 8914, 9522, 8422, 9639]
    productHierSk: 70669
}]

我试图调查这个链接,但没有按照预期的方式工作。有人可以建议

javascript ecmascript-6 javascript-objects
2个回答
0
投票

你可以用一个对象分组并得到值作为结果。

const
    data = ["70669", "70669|9436", "70669|8353", "70669|8914", "70669|9522", "70669|8422", "70669|9639"],
    result = Object.values(data.reduce((r, s) => {
        const [productHierSk, code] = s.split('|').map(Number);
        r[productHierSk] ??= { stdSizeCode: [], productHierSk };
        if (value !== undefined) r[productHierSk].stdSizeCode.push(code);
        return r;
    }, []));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }


0
投票

如果我正确理解你的问题

工作正常:

var object = [
  "70669",
  "70669|9436",
  "70669|8353",
  "70669|8914",
  "70669|9522",
  "70669|8422",
  "70669|9639",
];

var result = [{ stdSizeCode: [], productHierSk: null }];

object.map((item) => {
  if (item.includes("|")) {
    result[0].stdSizeCode.push(parseInt(item.split("|")[1]));
  } else {
    result[0].productHierSk = parseInt(item);
  }
});

console.log("result : ", result);

© www.soinside.com 2019 - 2024. All rights reserved.