javascript - 如何过滤对象数组以匹配列表?

标签 javascript json

给定 400.000 个大数据,例如:

var data = [
 {
  "kDefinition": "ford stream, wade across", 
  "kMandarin": "shè", 
  "char": "涉", 
  "kCantonese": "sip3", 
  "kJapaneseKun": "WATARU KAKAWARU", 
 }, 
 {
  "kDefinition": "to pierce, to stab; to take", 
  "kMandarin": "jué", 
  "char": "鈌", 
  "kCantonese": "kyut3", 
  "kJapaneseKun": "SASU"
 },
 ...
]

并给出一个与 char 字段匹配的较小 1000 个单位的子集列表:

var list = ['早', '维', '基', '涉', '百', ..., '科', '月']  

如何减少较大的数据以仅保留 list 中存在 obj.char 的 1000 个对象?

编辑: listdata 的排序顺序不同。

最佳答案

您可以将 list 数组转换为 Set,然后在过滤器内使用 has() 方法,如 @Amadan 所建议。

var data = [{"kDefinition":"ford stream, wade across","kMandarin":"shè","char":"涉","kCantonese":"sip3","kJapaneseKun":"WATARU KAKAWARU"},{"kDefinition":"to pierce, to stab; to take","kMandarin":"jué","char":"鈌","kCantonese":"kyut3","kJapaneseKun":"SASU"}]
var list = ['早', '维', '基', '涉', '百', '科', '月']  

list = new Set(list)

const result = data.filter(({char}) => list.has(char));
console.log(result)

关于javascript - 如何过滤对象数组以匹配列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48217612/

相关文章:

javascript - 从 JSON 生成 HTML,分配点击事件但不适用于初始 div

javascript - 如何在 JavaScript 而不是 HTML 元素中设置 AngularJS 验证

javascript - 辅助功能 (JAWS) - 带有 jQ​​uery 选择库的下拉列表

javascript - 如何创建没有名称的 "Empty"<Label> 标记

python - Django 中的自定义 JSONField

php - 使用 Laravel 在 Json 列中搜索

javascript - 图像和文本的 Jquery 悬停问题

javascript - 当浏览器自动填充数据时启用按钮

jquery - highcharts 通过 JSON 获取数据?

json - JSONiq 和 XQuery 3.1 之间有什么区别?