我需要检查(在从数组中删除项目之前),满足所有要求。
这意味着我的数组需要有一些默认值,我需要在删除之前检查是否在删除项目后仍然符合默认值,如果不是,则显示警告。
我曾经只有几个默认值(看起来像这样:defaults = [1];
),我已经有了执行检查的代码,但这可以通过匹配一个数组中的所有元素来实现({ {1}})包含在另一个(defaults
)中,如下所示:
list.devices
现在我的// Defaults looks like this: [1] and I need 1 to be contained)
var _arrayIsFullyContained, removeDeviceFromZone;
_arrayIsFullyContained = function(arr1, arr2) {
return arr1.every(function(item) {
return arr2.indexOf(item) !== -1;
});
};
removeDeviceFromZone = function(list, device) {
var afterRemoving, beforeRemoving, defaults;
defaults = list["default"];
beforeRemoving = list.devices;
afterRemoving = removeItemFromArray(list.devices, device);
if (_arrayIsFullyContained(defaults, afterRemoving) && _arrayIsFullyContained(defaults, beforeRemoving)) {
return list.devices = afterRemoving;
} else {
return list.devices = beforeRemoving;
}
};
已更改,我需要检查我的defaults
中是否包含默认值中的至少一个特定项目。
我尝试使用以下新功能替换上面代码中的list.devices
:
_arrayIsFullyContained
我们假设我有这种情况:
// Defaults looks like this: [1,2,3,4,5,6,7,8,9,10] and I need that at least one of the other is included
_arrayContainsAtLeastOneDefaultVariable = function(arr1, arr2) {
return arr1.some(function(val) {
return arr2.indexOf(val) >= 0;
});
};
我可以正确删除2,3,4(没有警告显示为1仍然存在)但如果我尝试删除1,2,3(保持4)而不是,我只能删除2,3但我不能删除1,因为我在尝试删除它时立即收到警告(当我尝试执行此操作时并不重要,我总是收到警告)
也许是因为它在匹配的第一个实例停止了?
有人可以帮我这个吗? 期望的结果是,鉴于上面的例子,我应该能够以任何顺序删除所有产品,只要至少有一个产品存在。
ps:我也使用lodash,如果有办法处理这种情况,我很乐意使用它。
由于