使用javascript

时间:2018-02-05 10:12:53

标签: javascript arrays lodash

我需要检查(在从数组中删除项目之前),满足所有要求。

这意味着我的数组需要有一些默认值,我需要在删除之前检查是否在删除项目后仍然符合默认值,如果不是,则显示警告。

我曾经只有几个默认值(看起来像这样: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,如果有办法处理这种情况,我很乐意使用它。

由于

0 个答案:

没有答案