Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 算法练习,对象操作_Javascript_Arrays_Javascript Objects - Fatal编程技术网

Javascript 算法练习,对象操作

Javascript 算法练习,对象操作,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我正在做一些练习来提高我的算法技能,但我正在努力解决这个问题,数据数组的格式必须与expectedStructure匹配,并放入newStructure中。如果有人能给我一个关于如何使用ES6语法的提示,那将是非常棒的,谢谢 const数据=[ { 名称:“风格”, 水桶:[ { 总数:38243, 比率:4.476200397255031, 名字:“浪漫”, md5:“257927a09632991b08877ef6d29bec00” }, { 计数:14414, 比率:1.68710489

我正在做一些练习来提高我的算法技能,但我正在努力解决这个问题,数据数组的格式必须与expectedStructure匹配,并放入newStructure中。如果有人能给我一个关于如何使用ES6语法的提示,那将是非常棒的,谢谢

const数据=[
{
名称:“风格”,
水桶:[
{
总数:38243,
比率:4.476200397255031,
名字:“浪漫”,
md5:“257927a09632991b08877ef6d29bec00”
},
{
计数:14414,
比率:1.6871048956942187,
名称:“复古”,
md5:“257927a09632991b08877ef6d29bec00”
}
]
},
{
名称:“颜色”,
水桶:[
{
计数:26219,
比率:8.1271048953942982,
名称:“蓝色”,
md5:“257927A09632991B08877EF6D29BEC000”,
水桶:[
{
计数:11976,
比率:3.1271048953942982,
名称:“浅蓝色”,
md5:“4457168314f0e9010d425f1d9db67937”
}
]
}
]
}
]
让newStructure=[];
const expectedStructure=[
{
总数:38243,
比率:4.476200397255031,
名字:“浪漫”,
md5:“257927A09632991B08877EF6D29BEC000”,
字段:“样式”,
标签:“风格=浪漫”
},
{
计数:14414,
比率:1.6871048956942187,
名称:“复古”,
md5:“257927A09632991B08877EF6D29BEC000”,
字段:“样式”,
标签:“风格=复古”
},
{
计数:26219,
比率:8.1271048953942982,
名称:“蓝色”,
md5:“257927A09632991B08877EF6D29BEC000”,
字段:“颜色”,
标签:“颜色=蓝色”
},
{
计数:11976,
比率:3.1271048953942982,
名称:“浅蓝色”,
md5:“4457168314f0e9010d425f1d9db67937”,
字段:“颜色”,
标签:“颜色=浅蓝色”
}

]
您可以在
字段上使用闭包,并对无限嵌套的
存储桶使用迭代和递归方法

var data=[{name:“style”,bucket:[{count:38243,ratio:4.476200397255031,name:“romatic”,md5:“257927a0963991b08877ef6d29bec00”},{count:14414,ratio:1.6871048956942187,name:“retro”,md5:“257927a0932991b08877ef6d29bec00”},{name:“color”,bucket:[{count:26219,ratio:8.1278953942982,name:“blue”,md5:“257927a09632991b08877ef6d29bec00”,存储桶:[计数:11976,比率:3.1271048953942982,名称:“浅蓝色”,md5:“4457168314f0e9010d425f1d9db67937”}],
result=data.reduce((r,{name:field,bucket})=>
reduce(函数iter,{count,ratio,name,md5,bucket=[]}){
s、 push({count,ratio,name,md5,field,label:[field,name].join('=')});
返回桶。减少(iter,s);
},r),[]);
console.log(结果);

。作为控制台包装{max height:100%!important;top:0;}
您可以在
字段
上使用闭包,并对无限嵌套的
存储桶
使用迭代和递归方法

var data=[{name:“style”,bucket:[{count:38243,ratio:4.476200397255031,name:“romatic”,md5:“257927a0963991b08877ef6d29bec00”},{count:14414,ratio:1.6871048956942187,name:“retro”,md5:“257927a0932991b08877ef6d29bec00”},{name:“color:“color”,bucket:[{count:26219,ratio:8.1278953942982,name:“blue”,md5:“257927a09632991b08877ef6d29bec00“,存储桶:[计数:11976,比率:3.1271048953942982,名称:“浅蓝色”,md5:“4457168314f0e9010d425f1d9db67937”}],
result=data.reduce((r,{name:field,bucket})=>
reduce(函数iter,{count,ratio,name,md5,bucket=[]}){
s、 push({count,ratio,name,md5,field,label:[field,name].join('=')});
返回桶。减少(iter,s);
},r),[]);
console.log(结果);

.as控制台包装{max height:100%!important;top:0;}
这里有一种方法可以使用递归实现这一点。 为了代码的可读性,我将这些函数分解为多个函数

const数据=[
{
名称:“风格”,
水桶:[
{
总数:38243,
比率:4.476200397255031,
名字:“浪漫”,
md5:“257927a09632991b08877ef6d29bec00”
},
{
计数:14414,
比率:1.6871048956942187,
名称:“复古”,
md5:“257927a09632991b08877ef6d29bec00”
}
]
},
{
名称:“颜色”,
水桶:[
{
计数:26219,
比率:8.1271048953942982,
名称:“蓝色”,
md5:“257927A09632991B08877EF6D29BEC000”,
水桶:[
{
计数:11976,
比率:3.1271048953942982,
名称:“浅蓝色”,
md5:“4457168314f0e9010d425f1d9db67937”
}
]
}
]
}
]
让newStructure=[];
const expectedStructure=[
{
总数:38243,
比率:4.476200397255031,
名字:“浪漫”,
md5:“257927A09632991B08877EF6D29BEC000”,
字段:“样式”,
标签:“风格=浪漫”
},
{
计数:14414,
比率:1.6871048956942187,
名称:“复古”,
md5:“257927A09632991B08877EF6D29BEC000”,
字段:“样式”,
标签:“风格=复古”
},
{
计数:26219,
比率:8.1271048953942982,
名称:“蓝色”,
md5:“257927A09632991B08877EF6D29BEC000”,
字段:“颜色”,
标签:“颜色=蓝色”
},
{
计数:11976,
比率:3.1271048953942982,
名称:“浅蓝色”,
md5:“4457168314f0e9010d425f1d9db67937”,
字段:“颜色”,
标签:“颜色=浅蓝色”
}
]
//步骤3:取出所需的值并将其推入newStructure
//您可以从对象中删除桶,并扩展其余属性
//ES6;)
函数addToStructure(字段,v){
常量{bucket,…all}=v;
设obj={
全部的
领域
标签:`${field}=${v.name}`
};
新结构推送(obj);
}
//步骤2:开始遍历存储桶,将对象添加到newStructure
//
//另外,检查是否有嵌套的bucket,然后
//重现