Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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 是否可以为ES6映射对象的值对象的属性排序?_Javascript_Sorting_Dictionary_Ecmascript 6 - Fatal编程技术网

Javascript 是否可以为ES6映射对象的值对象的属性排序?

Javascript 是否可以为ES6映射对象的值对象的属性排序?,javascript,sorting,dictionary,ecmascript-6,Javascript,Sorting,Dictionary,Ecmascript 6,我有一张对象值的地图。我想根据对象值的属性对它们进行排序 以下是示例地图: var map = new Map(); map.set("8014",{ "Access to support": null, "Capacity": 1, "Comfort Level": null, "Control Level": 1, "Growth Mindset": 1.54054054

我有一张对象值的地图。我想根据对象值的属性对它们进行排序

以下是示例地图:

var map = new Map();
map.set("8014",{
            "Access to support": null,
            "Capacity":  1,
            "Comfort Level": null,
            "Control Level": 1,
            "Growth Mindset": 1.5405405405405403,
            "Horizon": null,
            "Motivation": null,
            "Open-Mindedness": null,
            "Proactivity": null,
            "Resiliency": null,
            "Segment": "Level value 1"});
map.set("8015",{
            "Access to support": null,
            "Capacity":  1,
            "Comfort Level": null,
            "Control Level": 1,
            "Growth Mindset": 1.5405405405405403,
            "Horizon": null,
            "Motivation": null,
            "Open-Mindedness": null,
            "Proactivity": null,
            "Resiliency": null,
            "Segment": "Level value 2 or 5"});
map.set("8016",{
            "Access to support": null,
            "Capacity":  1,
            "Comfort Level": null,
            "Control Level": 1,
            "Growth Mindset": 1.5405405405405403,
            "Horizon": null,
            "Motivation": null,
            "Open-Mindedness": null,
            "Proactivity": null,
            "Resiliency": null,
            "Segment": "Level value 3 or 5"});
我想根据value对象的段属性对其进行排序。 任何帮助都将不胜感激

您需要在使用自定义回调对项目进行排序后重新生成,因为

映射
对象保存键值对并记住键的原始插入顺序

const
customSort=(a,b)=>a-b,//使用排序函数
sortBy=fn=>(a,b)=>fn(a[0],b[0]);
变量映射=新映射([['a',2],'c',1],'d',5]],
排序=新映射([…映射].sort(sortBy(customSort));
log([…map]);
log([…排序])
。作为控制台包装{max height:100%!important;top:0;}
您可以使用以下命令基于
创建映射条目。然后根据已排序的条目创建一个新映射

var-map=newmap();map.set(“8014”,{“获得支持”:空,能力:1,“舒适水平”:空,“控制水平”:1,“成长心态”:1.5403,视野:空,动机:空,“开放性”:空,主动性:空,弹性:空,分段:“水平值1”});map.set(“8015”,{“获得支持”:空,能力:1,“舒适水平”:空,“控制水平”:1,“成长心态”:1.5403,视野:空,动机:空,“开放性”:空,主动性:空,弹性:空,段:“水平值2或5”});map.set(“8016”,“获得支持”:空,能力:1,“舒适水平”:空,“控制水平”:1,“成长心态”:1.5403,视野:空,动机:空,“开放性”:空,主动性:空,弹性:空,分段:“水平值3或5”});
康斯特分类地图=
新地图(
数组.from(映射)
.sort((a,b)=>a[1].Segment.localeCompare(b[1].Segment))
);

console.log([…sortedMap.entries()])
请创建一个包含有效输入、预期输出和清晰问题陈述的数组。它是数组还是数组?为什么要排序?如果那是一张地图,那看起来是无效的。输出和输出类型是什么?映射是有序的(具有可预测的迭代),但不是可排序的。如果答案解决了您的问题,请单击它旁边的灰色复选标记。(我之所以提到它,是因为到目前为止您还没有接受任何答案)
fn(a[1],b[1])
似乎比调用
getValue
函数更简单:-)不需要获取条目,因为map已经返回了条目。@NinaScholz,我不知道。谢谢