为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript ? 多个数组拼接生成不重复字符串【挑战最简代码】

JavaScript ? 多个数组拼接生成不重复字符串【挑战最简代码】

慕田峪4524236 2018-12-06 21:32:28
已知objectA如何生成result var objectA = { 'A': [{ 'name': 'A1' }, { 'name': 'A2' }], 'B': [{ 'name': 'B1' }, { 'name': 'B2' }], 'C': [{ 'name': 'C1' }, { 'name': 'C2' }, { 'name': 'C3' }], 'D': [{ 'name': 'D1' }, { 'name': 'D2' }], 'E': [{ 'name': 'E1' }, { 'name': 'E2' }] }; var result = [ 'A1:B1:C1:D1:E1', 'A1:B1:C1:D1:E2', 'A1:B1:C1:D2:E1', 'A1:B1:C1:D2:E2', 'A1:B1:C2:D1:E1', 'A1:B1:C2:D1:E2', 'A1:B1:C2:D2:E1', 'A1:B1:C2:D2:E2', 'A1:B1:C3:D1:E1', 'A1:B1:C3:D1:E2', 'A1:B1:C3:D2:E1', 'A1:B1:C3:D2:E2', 'A1:B2:C1:D1:E1', 'A1:B2:C1:D1:E2', 'A1:B2:C1:D2:E1', 'A1:B2:C1:D2:E2', 'A1:B2:C2:D1:E1', 'A1:B2:C2:D1:E2', 'A1:B2:C2:D2:E1', 'A1:B2:C2:D2:E2', 'A1:B2:C3:D1:E1', 'A1:B2:C3:D1:E2', 'A1:B2:C3:D2:E1', 'A1:B2:C3:D2:E2', 'A2:B1:C1:D1:E1', 'A2:B1:C1:D1:E2', 'A2:B1:C1:D2:E1', 'A2:B1:C1:D2:E2', 'A2:B1:C2:D1:E1', 'A2:B1:C2:D1:E2', 'A2:B1:C2:D2:E1', 'A2:B1:C2:D2:E2', 'A2:B1:C3:D1:E1', 'A2:B1:C3:D1:E2', 'A2:B1:C3:D2:E1', 'A2:B1:C3:D2:E2', 'A2:B2:C1:D1:E1', 'A2:B2:C1:D1:E2', 'A2:B2:C1:D2:E1', 'A2:B2:C1:D2:E2', 'A2:B2:C2:D1:E1', 'A2:B2:C2:D1:E2', 'A2:B2:C2:D2:E1', 'A2:B2:C2:D2:E2', 'A2:B2:C3:D1:E1', 'A2:B2:C3:D1:E2', 'A2:B2:C3:D2:E1', 'A2:B2:C3:D2:E2' ]; 向最简代码发起挑战,你不来试试?
查看完整描述

13 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

这不就是排列组合算法么,应该一个递归可以搞定。

查看完整回答
反对 回复 2018-12-24
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

兄台确定?不妨试试,贴出来大家交流交流

查看完整回答
反对 回复 2018-12-24
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

@黒蚁: JS调试比较麻烦,要是用C#,我用linq一句代码应该可以搞定。

查看完整回答
反对 回复 2018-12-24
?
杨魅力

TA贡献1811条经验 获得超6个赞

想法:

objectA.A,objectA.B,objectA.C,objectA.D,objectA.E这是五个数组,

再五个for循环嵌套输出每个数组的name,输出的数组就是result了

查看完整回答
反对 回复 2018-12-24
?
萧十郎

TA贡献1815条经验 获得超13个赞

我感觉 有点意思哎 object
A 中的 A1怎么调取 出来呢

查看完整回答
反对 回复 2018-12-24
?
森林海

TA贡献2011条经验 获得超2个赞

有答案了,过来学习下吧

查看完整回答
反对 回复 2018-12-24
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

js计较麻烦,尝试后觉得只有字符串拼接是最简单的写法。

查看完整回答
反对 回复 2018-12-24
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

function init(initData){
initData = initData || {};//需要拼接出不重复的数组
var data = [];
var keys = [];
for (var i in initData){
keys.push(i);
};
var newkeys = keys.map(function(e,i,d){
var leng = d.length;
if(i < leng && i > 0){
return d[leng-i];
};
return e;
});
var evalObj = "";
for (var i = 0 ; i < keys.length ; i++){
evalObj += ('for(var '+newkeys[i]+' = 0 ; '+newkeys[i]+' < initData["'+newkeys[i]+'"].length ; '+newkeys[i]+'++){\n');
};
evalObj += "data.push(\n";
for (var i = 0 ; i < keys.length ; i++){
var ex = '+ ":" +';
if(i == keys.length-1){
ex = "";
}
evalObj += 'initData["'+keys[i]+'"]['+keys[i]+'].name'+ex+'\n';
}
evalObj += ")\n";
for (var i = 0 ; i < keys.length ; i++){
evalObj +="}\n";
}
eval(evalObj);
return data;//返回最终数据
}

查看完整回答
反对 回复 2018-12-24
?
狐的传说

TA贡献1804条经验 获得超3个赞

欢迎更简单的方法分享,哈哈~~~~~~~~~~~

查看完整回答
反对 回复 2018-12-24
  • 13 回答
  • 0 关注
  • 1025 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号