Javascript 按双嵌套值对JSON数组排序?
我无法找到合理的解决方案,因为我正在从firebase提取JSON数据,并将其从node.js提取到html文件中。我想通过一个名为value的属性对数据进行排序,因为我不知道如何访问JQuery中要排序的子值,我想知道是否有人能帮我找到正确的方向Javascript 按双嵌套值对JSON数组排序?,javascript,jquery,json,Javascript,Jquery,Json,我无法找到合理的解决方案,因为我正在从firebase提取JSON数据,并将其从node.js提取到html文件中。我想通过一个名为value的属性对数据进行排序,因为我不知道如何访问JQuery中要排序的子值,我想知道是否有人能帮我找到正确的方向 { key: "a", { key: "ab", { value: 2 } key: "ac", {
{
key: "a",
{
key: "ab",
{
value: 2
}
key: "ac",
{
value: 0
}
}
},
{
key: "b",
{
key: "bb",
{
value: 1
}
}
},
输出:
[{ac}, {bb}, {ab}]
在JSON和JavaScript语法中,您的输入和所需的输出都是用无效的符号表示的,因此我必须做出一些假设 您可以使用这个递归函数,它将查找所有嵌套的值属性,并收集这些值以及它们所在的父属性的名称。最后,对数据父键和值对进行排序: 函数collectValuesobj,名称{ return Object.entriesobj.reduce acc,[键,值]=>{ 根据concat返回 //递归地查看嵌套对象: Objectvalue==值?collectValuesvalue,键 //否则,当key为“value”时,收集该对象 :key==“value”?[[名称,值]] //否则忽略此值 : [] }, []; } //样本输入 变量输入=[{ a:{ ab:{ 价值:2 }, ac:{ 数值:0 } } }, { b:{ bb:{ 价值:1 } } }]; var result=collectValuesinput.sort a,b=>a[1]-b[1];
console.logresult 从原始图像模拟JSON: 风险值数据={ 关键1:{ 答:{deliveryshort:12152017}, b:{deliveryshort:10122015}, c:{deliveryshort:11302016}, d:{deliveryshort:09022014} }, 关键2:{ 答:{deliveryshort:10102017}, b:{deliveryshort:09102017} }, }; 函数parsedatestr{ var month=+dateStr[0]+dateStr[1]; var day=+dateStr[2]+dateStr[3]; var year=+dateStr[4]+dateStr[5]+dateStr[6]+dateStr[7]; var结果=新日期年、月、日; 返回结果; } 函数sortBydata、属性、转换器{ var j=新数组; 对于数据中的var项{ j、 推送[项目,数据[项目],转换器数据[项目][属性]; } j、 sort函数a,b{返回a[2]-b[2]}; 返回j; } 函数sortDatadata{ var d={}; 对于数据中的var项{ var sorted=sortBydata[item],deliveryshort,函数a{return parseDatea;}; /*var归一化=新数组; 对于变量i=0;i