javascript - typescript 按数组过滤对象数组

标签 javascript

我必须过滤一个对象数组以获取基于另一个数组的某些值并且也不同

数据

var value:any[]

 var inventory = [
        {id: 1, quantity: 2, GroupId: 1},
        {id: 2, quantity: 0, GroupId: 2},
        {id: 1, quantity: 2, GroupId: 1}
    ];

   //data from db
   value = [1,2]

我的代码

var data = this.inventory .filter(x => x.GroupId == this.value );

无法获取过滤后的数据,但返回空数组。提前致谢

最佳答案

在您的代码中,您将 GroupId 与数组进行比较。您应该检查数组是否包含 GroupId

方法如下:

var data = this.inventory.filter(x => value.includes(x.GroupId));

为了获得更好的支持,您可以替换 Array.prototype.includesArray.prototype.indexOf :

var data = this.inventory.filter(x => value.indexOf(x.GroupId) !== -1);

关于javascript - typescript 按数组过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48401341/

相关文章:

javascript - 图像处理后更新制服或从片段着色器获取数据

javascript - 无法设法定位 jQuery 中的元素

javascript - 使用js在svg中的rect标签内画一个复选标记

javascript - 在数组 JAVASCRIPT 中存储坐标和各种游戏数据

javascript - jquery 脚本在 ie 中不起作用

javascript - Moment.js - moment().format() 创建无效日期?

JavaScript HtmlUnit

javascript - 如何使用jquery返回链接的值?

javascript - 使用正则表达式匹配 0 到 100 或 0% 到 100%

javascript - 使用 gridfs-stream 执行 find() 时如何指定 GridFS 存储桶