我目前正在将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的设计模式或精神中是否存在与此方法相矛盾的概念?或者它是否像未发生的功能请求一样简单?
请注意我并不是想唠叨功能,只是更好地理解框架的设计。
谢谢!
答案 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的作者,所以我不能肯定他们的决定。这只是我对所做选择的理解。