ImmutableJS,深层嵌套节点删除

时间:2016-04-20 16:09:31

标签: javascript recursion immutable.js

我有一个如下所示的结构存储在使用 Immutable.fromJS 方法构建的不可变列表中

private static ObjectMapper mapper = new ObjectMapper();

public static void main(String[] args) throws IOException {
    System.out.println(filterJsonArray(JSON, "loginName", "test0001@test.com", "status", "167"));
}

public static String filterJsonArray(String array, String keyOne, Object valueOne, String keyTwo, Object valueTwo) throws IOException {
    Map[] nodes = mapper.readValue(array, HashMap[].class);

    for (Map node : nodes) {
        if (node.containsKey(keyOne) && node.containsKey(keyTwo)) {
            if (node.get(keyOne).equals(valueOne) && node.get(keyTwo).equals(valueTwo)) {
                return mapper.writeValueAsString(node);
            }
        }
    }

    return null;
}

要求是通过 key 属性删除给定节点。 Key属性在结构中是唯一的。我编写了以下代码来实现功能,但是我不确定解决方案是否正确或者可以接受为ImmutableJS的方式。请求ImmutableJS社区的专家意见。

[{
  key:"1",
  children:[
    {key:"1.1"},
    {key:"1.2"},
    {key:"1.3",
      children:[
        {key:"1.3.1"}
      ]
    }]
}]

JSBin用于上面给出的代码 https://jsbin.com/bihowu/edit?js,console

0 个答案:

没有答案