使用 lodash 的递归循环

San*_*alp 7 javascript lodash

我正在尝试使用 lodash 操作 n 级深度数组/对象。递归映射函数或使用循环都不是完美的解决方案。

我有这样的示例对象,关键是它可以是数组或对象。我想使用循环它乏味的方式在一次转到 false 中操作键值。我是否可以使用 lodash 进行操作以将值完全更改为布尔值或其他值。

var a = {key1:true, key2:true, key3:[{key1:true, key5:true}], key6:true};
Run Code Online (Sandbox Code Playgroud)

rye*_*lar 6

您可以使用cloneDeepWith来实现相同的结果。

var result = _.cloneDeepWith(a, function(v) {
  if(!_.isObject(v)) {
    return false;
  }
});
Run Code Online (Sandbox Code Playgroud)

var result = _.cloneDeepWith(a, function(v) {
  if(!_.isObject(v)) {
    return false;
  }
});
Run Code Online (Sandbox Code Playgroud)
var a = {
  key1: true,
  key2: true,
  key3: [{
    key1: true,
    key5: true
  }],
  key6: true
};

var result = _.cloneDeepWith(a, function(v) {
  if(!_.isObject(v)) {
    return false;
  }
});

console.log(result);
Run Code Online (Sandbox Code Playgroud)
body > div { min-height: 100%; top: 0; }
Run Code Online (Sandbox Code Playgroud)

  • @DanielKhoroshko 你尝试过运行该片段吗?它绝对有效。此外,它不仅被调用一次,而且会被调用直到遍历整个对象树。 (4认同)
  • 这实际上不起作用,因为回调只会为整个对象调用一次 (2认同)