【发布时间】:2018-09-29 02:15:59
【问题描述】:
假设你有两个数组:
Animals[];
SelectedAnimals[];
当用户搜索新动物时,我们必须确保选中的动物保持选中状态,并且如果新的动物结果不匹配,我们还必须确保过滤掉之前选择的动物。
我的解决方案确实有效,但我担心给定地图、过滤器、过滤器在单个数组上的时间复杂度/hacky-ness。有没有更好的方法使用 JS/Lodash 数组函数来实现我用所述数组的子集过滤数组的目标(并避免未定义的条目)?
new V.Ajax().Post(window.animals.urls.searchAnimals, searchParams).done((response: V.JsonResult) => {
if (response.success) {
let newAnimals = response.data.Results as Animal[];
let selectedAnimals = newAnimals == [] ? [] : this.state.selectedAnimals.map(x => filter(newAnimals, (animal) => animal.AnimalID == x.AnimalID)).filter(item => typeof item === 'number');
【问题讨论】:
-
我们所说的数组有多长?
-
@Markus 假设最大 1000
标签: javascript arrays typescript lodash