javascript - 如何过滤具有保存值javascript的对象数组

标签 javascript arrays object

我有一个对象数组

var arr = [{ name: 'ABC', class: 'A', section:'1', roll_no: '123' },
           { name: 'xyz', class: 'A', section:'1', roll_no: '456' },
           { name: 'AKM', class: 'B', section:'2', roll_no: '333' },
           { name: 'PQR', class: 'A', section:'1', roll_no: '444' },
           { name: 'STU', class: 'B', section:'2', roll_no: '533' },
           { name: 'JKL', class: 'B', section:'2', roll_no: '987' }];

在这里你可以看到我有 classsection,我想找到不同的 classsection值(value)观。

例如,我想要获得 2 个类 A 和 B 以及 2 个第 1 部分和第 2 部分。

如何获取不同数组中的不同值?

谢谢。

编辑

我期望的输出是:

var output = [{ class: 'A', section:'1'},
              { class: 'B', section:'2'}
             ];

这不是重复的问题我没有使用下划线 js。

最佳答案

使用Set对象和Array.prototype.forEach()函数的解决方案:

var arr = [{ name: 'ABC', class: 'A', section:'1', roll_no: '123' },
    { name: 'xyz', class: 'A', section:'1', roll_no: '456' },
    { name: 'AKM', class: 'B', section:'2', roll_no: '333' },
    { name: 'PQR', class: 'A', section:'1', roll_no: '444' },
    { name: 'STU', class: 'B', section:'2', roll_no: '533' },
    { name: 'JKL', class: 'B', section:'2', roll_no: '987' }];

var s = new Set(),
    result = [];

arr.forEach(function (o) {
    var hash = o.class + o.section;
    if (!s.has(hash)) {  // ensuring the unique combination of `class`+`section` values
        result.push({class: o.class, section: o.section});
        s.add(hash);
    }
});

console.log(result);

关于javascript - 如何过滤具有保存值javascript的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42995417/

相关文章:

javascript - 使用es6从两个对象中获取差异对象

python - 与 return 语句一起使用 'elif' 或连续的 'if' 语句更好吗?

java - Object类型的数组,并比较数组内的对象

java - 使用自定义对象数组

arrays - MongoDB 将字符串转换为数组

javascript - 如何循环该数组以仅提取 orderTotal?

javascript - 将 Select2 和 X-Editable 与最新版本一起使用

javascript - 使用外部 JSON 绘制 chart.js

javascript - sqlexception消息显示导致页面错误

javascript - 传递的 Json 不被 Controller 接受