Javascript 按类型使用最低层的节点数据
我将在javascript数组中演示我的数据。我正在寻找JS或Mysql中的解决方案。数据库表是平面的,就像这个数组一样Javascript 按类型使用最低层的节点数据,javascript,mysql,algorithm,Javascript,Mysql,Algorithm,我将在javascript数组中演示我的数据。我正在寻找JS或Mysql中的解决方案。数据库表是平面的,就像这个数组一样 [{ "id": 1, "account_id": 1, "size_id": null, "color_id": null, "style": "new-age", "amount": "30.00" }, { "id": 2, "account_id": 1, "size_id": 1, "c
[{
"id": 1,
"account_id": 1,
"size_id": null,
"color_id": null,
"style": "new-age",
"amount": "30.00"
},
{
"id": 2,
"account_id": 1,
"size_id": 1,
"color_id": null,
"style": "new-age",
"amount": "5.00"
},
{
"id": 3,
"account_id": 1,
"size_id": 1,
"color_id": 1,
"style": "new-age",
"amount": "6.00"
},
{
"id": 3,
"account_id": 1,
"size_id": 1,
"color_id": null,
"style": "old-school",
"amount": "25.00"
},
{
"id": 3,
"account_id": 1,
"size_id": null,
"color_id": null,
"style": "old-school",
"amount": "2.00"
}]
我特别关注以下专栏:
帐号
大小
颜色
我希望结果按样式分组,例如,如果用户指定大小和颜色,我希望结果如下所示:
[{
"id": 3,
"account_id": 1,
"size_id": 1,
"color_id": 1,
"style": "new-age",
"amount": "6.00"
},
{
"id": 3,
"account_id": 1,
"size_id": 1,
"color_id": null,
"style": "old-school",
"amount": "25.00"
}]
[{
"id": 1,
"account_id": 1,
"size_id": null,
"color_id": null,
"style": "new-age",
"amount": "30.00"
},
{
"id": 3,
"account_id": 1,
"size_id": null,
"color_id": null,
"style": "old-school",
"amount": "2.00"
}];
另一种情况是,它们不指定大小或颜色id,结果如下所示:
[{
"id": 3,
"account_id": 1,
"size_id": 1,
"color_id": 1,
"style": "new-age",
"amount": "6.00"
},
{
"id": 3,
"account_id": 1,
"size_id": 1,
"color_id": null,
"style": "old-school",
"amount": "25.00"
}]
[{
"id": 1,
"account_id": 1,
"size_id": null,
"color_id": null,
"style": "new-age",
"amount": "30.00"
},
{
"id": 3,
"account_id": 1,
"size_id": null,
"color_id": null,
"style": "old-school",
"amount": "2.00"
}];
假设帐户id始终有一个记录
如果指定了颜色标识,则首先使用该记录。
如果指定了size_id,则仅在帐户id上方使用该记录。
如果未指定颜色id或大小id,则默认为帐户id进行定价。
此方案的特点是一个小功能selectfrom,其中sort有三个参数 from:作为数组的数据源,必需 其中:具有一个或多个键/值对的对象,如果提供了多个键/值对,则条件为带和链接。如果不正确,则该参数无效 排序:一个包含键/值对对象的数组,该数组对结果集进行排序,键升序为值1,降序为值-1。排序以字符串排序为特征。如果不正确,则该参数无效 测试用例返回: 颜色_id=1的所有集合,按样式升序排序。 大小为1的所有集合,按样式升序排序。 颜色为null且大小为null的所有集合,按样式升序排序。 按样式升序和金额升序排序的所有集合。 风险值数据=[ {id:1,帐户id:1,大小id:null,颜色id:null,样式:新时代,金额:30.00}, {id:2,帐户id:1,大小id:1,颜色id:null,样式:新时代,金额:5.00}, {id:3,帐户id:1,大小id:1,颜色id:1,样式:新时代,金额:6.00}, {id:3,帐户id:1,大小id:1,颜色id:null,样式:老式,金额:25.00}, {id:3,帐户id:1,大小id:null,颜色id:null,样式:老式,金额:2.00} ]; 函数selectfrom、where、sort{ var数据=from.0; where&&Object.keyswhere.foreachk函数{ data=data.filterfunction d{ 返回d[k]==其中[k]; }; }; sort&&data.sort函数a、b{ var值=0; sort.Somel函数{ var key=Object.keysel[0]; value=~el[key]?a[key].localeCompareb[key]:b[key].localeComparea[key]; 返回值; }; 返回值; }; 返回数据; } 函数printo{ document.body.innerHTML+=; } printselectdata,{color_id:1},[{style:1}]; printselectdata,{size_id:1},[{style:1}]; printselectdata,{color\u id:null,size\u id:null},[{style:1}];
printselectdata,未定义,[{style:1},{amount:1}];请解释一下用户指定大小和颜色的结果,因为颜色不是空就是1?