仅当值不存在时才使用 lodash 推送到数组?

新手上路,请多包涵

我正在尝试创建一个数组,如果一个值不存在,则添加它,但是如果该值存在,我也想从数组中删除该值。

感觉 Lodash 应该可以做这样的事情。

我对您的最佳实践建议很感兴趣。

另外值得指出的是我正在使用 Angular.js

\* 更新 *

 if (!_.includes(scope.index, val)) {
    scope.index.push(val);
} else {
  _.remove(scope.index, val);
}

原文由 Max Lynn 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 462
2 个回答

ES6 引入的 Set 特性可以做到这一点。

 var s = new Set();

// Adding alues
s.add('hello');
s.add('world');
s.add('hello'); // already exists

// Removing values
s.delete('world');

var array = Array.from(s);

或者,如果您想继续使用常规数组

function add(array, value) {
  if (array.indexOf(value) === -1) {
    array.push(value);
  }
}

function remove(array, value) {
  var index = array.indexOf(value);
  if (index !== -1) {
    array.splice(index, 1);
  }
}

在 Lodash 上使用 vanilla JS 是一个很好的做法。它消除了依赖性,迫使您理解您的代码,并且通常性能更高。

原文由 floribon 发布,翻译遵循 CC BY-SA 3.0 许可协议

你可以使用 _.union

 _.union(scope.index, [val]);

原文由 Afzal Hossain 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题