使用javascriptpartial.lenses在数组中获取属性时遇到麻烦

时间:2019-02-22 00:47:45

标签: javascript node.js partial-lenses

我试图弄清楚如何创建一个镜头,该镜头可以从数组中为我提供键值数组。这是一个简单的示例:

const L = require('partial.lenses');

const data = [
  {
    r: [
      {
        d: {
          one: 1,
          two: 2
        }
      }
    ]
  },
  {
    r: [
      {
        d: {
          three: 3,
          four: 4
        }
      }
    ]
  }
];

const lens = L.compose (
  L.elems,
  L.prop ('r'),
  L.elems,
  L.prop ('d'),
);

const result = L.get (lens, data);
console.log (result);

我想要:

[{ one: 1, two: 2 }, { three: 3, four: 4 }]

但是得到:

{ one: 1, two: 2 }

我确定这是微不足道的,但不能完全正确。一旦我的镜头正确选择了'd'的数组,我想使用L.modify来获取所有'd'对象都替换为字符串的数据。我想我一旦镜头正确就知道该怎么办。

谢谢

1 个答案:

答案 0 :(得分:1)

使用L.collect代替L.getL.get返回找到的第一个实体,而L.collect返回所有匹配的实体,类似于[].filter与{{1 }}。

https://github.com/calmm-js/partial.lenses#l-collect