商品sku数组的实现,最好是用reduce
原始数组,数组不固定,可能有多个,id和name不同,sid可以相同(相同属于同一类)
var arr = [
{ "id": "1", "sid": "mm", "name": "黑色" },
{ "id": "2", "sid": "mm", "name": "白色" },
{ "id": "3", "sid": "xx", "name": "64G" },
{ "id": "4", "sid": "xx", "name": "128G" },
{ "id": "5", "sid": "yy", "name": "normal" },
{ "id": "6", "sid": "yy", "name": "plus" }
]
结果组成
var arr2 = [
{ name: '黑色,64G,normal', attrs: [{ "id": "1", "sid": "mm", "name": "黑色" }, { "id": "3", "sid": "xx", "name": "64G" }, { "id": "5", "sid": "yy", "name": "normal" }] },
{ name: '黑色,64G,plus', attrs: [{ "id": "1", "sid": "mm", "name": "黑色" }, { "id": "3", "sid": "xx", "name": "64G" }, { "id": "6", "sid": "yy", "name": "plus" }] },
{ name: '黑色,128G,normal', attrs: [{ "id": "1", "sid": "mm", "name": "黑色" }, { "id": "4", "sid": "xx", "name": "128G" }, { "id": "5", "sid": "yy", "name": "normal" }] },
{ name: '黑色,128G,plus', attrs: [{ "id": "1", "sid": "mm", "name": "黑色" }, { "id": "4", "sid": "xx", "name": "128G" }, { "id": "6", "sid": "yy", "name": "plus" }] },
{ name: '白色,64G,normal', attrs: [{ "id": "2", "sid": "mm", "name": "白色" }, { "id": "3", "sid": "xx", "name": "64G" }, { "id": "5", "sid": "yy", "name": "normal" }] },
{ name: '白色,64G,plus', attrs: [{ "id": "2", "sid": "mm", "name": "白色" }, { "id": "3", "sid": "xx", "name": "64G" }, { "id": "6", "sid": "yy", "name": "plus" }] },
{ name: '白色,128G,normal', attrs: [{ "id": "2", "sid": "mm", "name": "白色" }, { "id": "4", "sid": "xx", "name": "128G" }, { "id": "5", "sid": "yy", "name": "normal" }] },
{ name: '白色,128G,plus', attrs: [{ "id": "2", "sid": "mm", "name": "白色" }, { "id": "4", "sid": "xx", "name": "128G" }, { "id": "6", "sid": "yy", "name": "plus" }] },
]
如果
var arr = [
{ "id": "1", "sid": "mm", "name": "黑色" },
{ "id": "2", "sid": "mm", "name": "白色" },
{ "id": "3", "sid": "xx", "name": "64G" },
{ "id": "4", "sid": "xx", "name": "128G" }
]
var arr2 = [
{ name: '黑色,64G', attrs: [{ "id": "1", "sid": "mm", "name": "黑色" }, { "id": "3", "sid": "xx", "name": "64G" }] },
{ name: '黑色,128G', attrs: [{ "id": "1", "sid": "mm", "name": "黑色" }, { "id": "4", "sid": "xx", "name": "128G" }] },
{ name: '白色,64G', attrs: [{ "id": "2", "sid": "mm", "name": "白色" }, { "id": "3", "sid": "xx", "name": "64G" }] },
{ name: '白色,128G', attrs: [{ "id": "2", "sid": "mm", "name": "白色" }, { "id": "4", "sid": "xx", "name": "128G" }] },
]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
经过大佬指点,了解了这是笛卡尔积,参考了笛卡尔积算法
本题的解析如下,代码有点乱,请谅解
按照当前重组对象(就算写在reduce也是一样的,还是纯函数的形式重组你的对象),等于说就是sid一样的抽一个出来,然后重新组成一个对象放到另外一个数组里。大致思路就这样