【问题标题】:lodash does omit mutate the array on which it is called?lodash 是否省略了调用它的数组?
【发布时间】:2018-06-08 15:36:46
【问题描述】:

查看 lodash 的 filter 方法,我不清楚文档是否会改变调用它的集合。

但似乎在反应中,当我尝试从以前的属性中创建一个新集合时,_.omit 确实改变了父级。

_.reject 是不是更合适的解决方案,它不会改变其父级?

这是 profile.id 消失的示例 jsfiddle。 https://jsfiddle.net/69z2wepo/96535/

【问题讨论】:

  • Omit 用于对象,而不是数组。过滤器不会改变集合。
  • 在文档中明确调用了改变其输入的函数(lodash.com/docs 中的 Ctrl+F "mutate")。 filteromit 都没有提到改变输入。
  • @EricGuan 文档说 omit 将用于对象 lodash.com/docs/4.17.4#omit
  • @AsadSaeeduddin 我添加了一个显示 profile.id 消失的 jsfiddle 示例
  • 我在你的 jsfiddle 中没有看到任何 lodash 的使用。

标签: javascript reactjs filter lodash


【解决方案1】:

我没有完全理解您的问题,但您似乎关心filteromitreject 中的一个或多个是否会改变他们的输入。他们都没有。运行这个 sn -p 看看:

const original = {a: 1};

console.log('--- filter() ---')
console.log(_.filter(original, 'a'));
console.log(original);

console.log('--- omit() ---')
console.log(_.omit(original, 'a'));
console.log(original);

console.log('--- reject() ---')
console.log(_.reject(original, () => true));
console.log(original);
<script src="https://unpkg.com/lodash@4.17.4/lodash.js"></script>

无耻插件:filter()omit() 可在我的库 Micro-dash 中找到,它们的捆绑包大小比 Lodash 同类产品小得多。

【讨论】:

  • lodash 中是否有一个版本的omit 可以改变对象?
  • 看起来 unset() 可能是你想要的。
猜你喜欢
  • 2016-01-25
  • 2018-08-24
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-30
相关资源
最近更新 更多