【问题标题】:Filter an array of objects via another integer array通过另一个整数数组过滤对象数组
【发布时间】:2015-06-02 23:21:57
【问题描述】:

我有一个从 ajax 调用中获得的 对象数组,每个对象都有如下示例中的属性:

姓名:鲍勃·迪伦

值: 452342

我还有一个 包含数组 的值,如果不是空的,我需要过滤上面的 对象数组 以仅包含具有 值的对象>包含数组。

更新:包含数组的示例很简单:[452342, 4563546,34563,34563456,345634]

我最好的猜测是有 2 个循环,外部一个遍历对象数组,内部一个检查它们是否存在于包含列表中,如果不切片该对象。有没有更好、更省力的方法?

【问题讨论】:

  • 你能提供一个包含你的包含数组的例子吗?
  • 数组有一个.filter 方法,你可以使用.includes(或.indexOf,如果你使用的是旧浏览器和/或不想polyfill)来检查在.maping 到属性之后的其他数组。
  • 包含数组是否包含与对象数组相同的对象引用?还是只有看起来相同的对象?
  • 提供实际退货数据的样本将非常有助于成功回答您的问题。
  • 更新了包含数组的示例,更改了一些措辞以更清晰。

标签: javascript


【解决方案1】:

先用array.filter方法,再用filter方法。

function isInInclusion(value) {
  var inclusionArray = [2, 130, 12];
  return inclusionArray.indexOf(value) >= 0;
};

var filtered = [12, 5, 8, 130, 44].filter(isInInclusion);

这里有一些参考资料取决于您使用的是什么(jquery、mootools 等):How do I check if an array includes an object in JavaScript?

【讨论】:

  • 这个答案是最接近的,我可以通过用我的对象数组替换 [12, 5, 8, 130, 44] 并更改 return containsArray.indexOf(value) > = 0;返回inclusionArray.indexOf(value.Value) >= 0;
  • 当然。我为您提供了一个示例,因为我不知道您的数据结构。
猜你喜欢
  • 2019-05-05
  • 2019-07-18
  • 2020-01-27
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 2018-10-03
相关资源
最近更新 更多