【发布时间】:2021-03-02 20:17:38
【问题描述】:
我已经有了对象的这个答案,但正在寻找一种方法来改进它以便能够使用相同对象类型的数组:
%dw 1.0
%output application/json
%function filterKeys(o, k)
o mapObject
{
($$):
$ when ($ is :string and not (k contains ($$ as :string)))
otherwise orderMembers($, k)
}
orderBy $$
%function splitString(s) s splitBy "," map trim $
%function orderMembers(x, k)
x match {
a is :array -> a orderBy $,
o is :object -> filterKeys(o, k),
s is :string -> orderMembers(splitString(s), k)
when s contains ',' otherwise s,
default -> $
}
%var testData={ccc:"333", ddd: ["555", "333", "222"], bbb: "223,221,222", eee: "456, 789, 123", aaa: 11}
---
orderMembers(testData, ["bbb"])
如何修改它以使其可以与该数据样本一起使用:
%var testData=[{ccc:"333", ddd: ["555", "333", "222"], bbb: "223,221,222", eee: "456, 789, 123", aaa: 11}, {ccc:"333", ddd: ["555", "333", "222"], bbb: "223,221,222", eee: "456, 789, 123", aaa: 11}]
【问题讨论】:
-
orderMember 函数不是已经按预期工作了吗?
-
请解释使用该输入数据时的问题和预期结果。
-
它的工作然后输入是对象 {} 但随后它作为对象数组出现 [{},{},{}] 它的放置错误无法比较 ::object