为什么Immutable.js没有“按值删除”选项?

时间:2018-05-01 20:06:44

标签: javascript list indexof immutable.js

我目前正在将Redux应用程序的状态转换为使用Immutable.js数据结构。我看到Immutable.js List没有按值删除的方法(例如Lodash's .pull),所以你必须使用老式的.indexOf

我们为什么需要:

let list = List(['a', 'b']);
let aList = list.delete(list.indexOf('b'));

......当我们可以的时候,例如:

let list = List(['a', 'b']);
let aList = list.deleteByValue('b');

Immutable的设计模式或精神中是否存在与此方法相矛盾的概念?或者它是否像未发生的功能请求一样简单?

请注意我并不是想唠叨功能,只是更好地理解框架的设计。

谢谢!

1 个答案:

答案 0 :(得分:0)

正如一些评论所提到的,filter完成了你想要的。它是一个基于值从集合中删除值的函数。添加deleteValue对于扩展库确实做了很多工作,而且实际上只是API膨胀。

  

但按照这个逻辑,isn&#t; t。delete()已经API膨胀......?

但是Immutable.js尝试做的事情之一是在它的API和JavaScript的内置数据结构之间建立对称性,例如: Map#delete。内置类型没有这样的deleteValue方法,因此Immutable.js不太愿意包含该功能。

我相信这也是indexOf findIndex可以被$scope.createUser = function() { var modalInstance = $modal.open({ templateUrl: '/js/modal-popup.html', controller: function ($scope, $modalInstance, $log) { $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; }, }); } $scope.allTest = function() { $http({ method: 'GET', url: 'api/url' }).success( function (data) { $scope.data = data.data; }).error(function (response){ console.log("error"); }); } <button type="button" name="createUser" class="btn btn-primary pull-right" ng-click="createUser(); allTest()">Create User </button> <div class="modal-header"> <h3 class="modal-title"><span class="glyphicon glyphicon-user"></span> Create User</h3> </div> <div class="modal-body"> {{data}} </div> <div class="modal-footer"> <button class="btn btn-primary" ng-click="ok()">OK</button> <button class="btn btn-warning" ng-click="cancel()">Cancel</button> </div> 完全取代的原因。

免责声明:我不是Immutable.js的作者,所以我不能肯定他们的决定。这只是我对所做选择的理解。