我无法找到合理的解决方案,因为我从firebase中提取JSON数据并将其从node.js拉到html文件中。我想通过一个名为“value”的属性对我的数据进行排序,因为我不知道如何在JQuery中访问子子值以进行排序,我想知道是否有人可以帮助我引导我朝着正确的方向前进。
{
key: "a",
{
key: "ab",
{
value: 2
}
key: "ac",
{
value: 0
}
}
},
{
key: "b",
{
key: "bb",
{
value: 1
}
}
},
输出:
[{ac}, {bb}, {ab}]
答案 0 :(得分:1)
您的输入和所需输出都以无效符号表示(使用JSON和JavaScript语法),因此我必须做出一些假设。
您可以使用此递归函数,该函数将查找所有嵌套的data.post = data.post || {};
data.post[name] = content;
属性,并将这些值与它们出现的父属性的名称一起收集。最后,这些数据对(父键和值)被排序:
value
答案 1 :(得分:0)
从原始图片中模拟你的JSON:
var data = {
key1: {
"a": { "deliveryshort": "12152017" },
"b": { "deliveryshort": "10122015" },
"c": { "deliveryshort": "11302016" },
"d": { "deliveryshort": "09022014" }
},
key2: {
"a": { "deliveryshort": "10102017" },
"b": { "deliveryshort": "09102017" }
},
};
function parseDate(dateStr) {
var month = "" + dateStr[0] + dateStr[1];
var day = "" + dateStr[2] + dateStr[3];
var year = "" + dateStr[4] + dateStr[5] + dateStr[6] + dateStr[7];
var result = new Date(year, month, day);
return result;
}
function sortBy(data, property, converter) {
var j = new Array();
for (var item in data) {
j.push([item, data[item], converter(data[item][property])]);
}
j.sort(function (a, b) { return a[2] - b[2] });
return j;
}
function sortData(data) {
var d = {};
for (var item in data) {
var sorted = sortBy(data[item], "deliveryshort", function (a) { return parseDate(a); });
/*var normalized = new Array();
for (var i = 0; i < sorted.length; i++) {
var ni = sorted[i];
var key = ni[0];
var obj = ni[1];
normalized[key] = obj;
}*/
d[item] = sorted;
}
console.log(d);
return d;
}
sortData(data);