在 Coldfusion 中对嵌套结构进行排序

Sort a nested structure in Coldfusion

我正在尝试使用 StructSort 对嵌套结构进行排序。下面是我正在尝试做的一个简单示例。下面的代码不起作用并且 returns 以下错误“指定的元素 a 不包含简单值。”是否可以在 Coldfusion 中对嵌套结构进行排序,如果可以,如何排序?

<cfscript>
   data = {"a":{"name":100},"b":{"name":50},"c":{"name":25},"d":{"name":75}};
   dataSorted= StructSort(data, function(a,b) {
    return compare(a.name, b.name);
   });
   writeDump(dataSorted);
</cfscript>

预期输出

  1. c
  2. b
  3. d
  4. 一个

也在这里发了一个cffiddle:https://cffiddle.org/app/e20a782a-be90-4e65-83de-e31eb83fdf4f

文档:https://docs.lucee.org/reference/objects/struct/sort.html

<cfscript>
   data = {
       "a": {"name": 100},
       "b": {"name": 50},
       "c": {"name": 25},
       "d": {"name": 75}
   };

    dataSorted = data.sort("numeric", "asc", "name")

    writeDump(dataSorted);
</cfscript>

结果:数组["c", "b", "d", "a"]

这对我在 lucee 5 上有用。某事。排序函数中的最后一个参数是结构中的 pathToSubElement。对于您的示例,它只是使用 name 属性.

的一层深度