原始数组,数组不固定,可能有多个,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" }] },
]
经过大佬指点,了解了这是笛卡尔积,参考了笛卡尔积算法
本题的解析如下,代码有点乱,请谅解