jquery - 过滤对象数组以将不同的值放入新数组中

标签 jquery arrays

我有created a fiddle here借助下面的一些答案来回答我的问题。

我有一个对象数组。 a 数组中的单个对象包含:

obj1, obj2, obj3...

其中一个对象的示例是:

{
client_id: "85"
id: 1477
organisation_id: 5
task_project_id: 26
project_name: "Reiciendis adipisci fugiat."
project_description: "Soluta consequatur labore et dolores"
task_description: "Qui sunt at aut."
task_end_time: null
task_start_time: "2016-05-21 09:00:00"
transaction_id: null
}

我想从第一个数组生成一个新的对象数组,其中包含不同的 task_project_id 条目。新数组应包含以下结构的不同对象:

{
task_project_id: 26
project_name: "Reiciendis adipisci fugiat."
}

我尝试过jQuery.greparray.filterarray.map但无济于事。我似乎也找不到使用“提取不同对象的数组”作为搜索的示例。有人可以给我举个例子吗?谢谢。

最佳答案

array.map 应该可以正常工作:

var b = a.map(function(e) {
  return {
    task_project_id: e.task_project_id,
    project_description: e.project_description
  }
});

编辑:通过存储已遇到的“已见过”任务项目 ID 的列表来过滤掉重复项:

var seen = {}; // keys = list of unique task project ids
var b = a.filter(function (e) {
  return seen[e.task_project_id] ? false : (seen[e.task_project_id] = true);
});

把它们放在一起:

var newArray = (function (a) {
  var seen = {};
  return a.filter(function (e) {
    return seen[e.task_project_id] ? false : (seen[e.task_project_id] = true);
  }).map(function (e) {
    return {
      task_project_id: e.task_project_id,
      project_description: e.project_description
    }
  });
})(oldArray);

关于jquery - 过滤对象数组以将不同的值放入新数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39311267/

相关文章:

php - 使用 jquery 动态地将 id 添加到 html 组件

javascript - 双击选择动态添加的 H1 中的文本,如何停止此操作?

javascript - JQuery 移动页面幻灯片,新的 facebook 菜单

php - 如何使用分隔列和值的数组生成查询

c++ - 如果数组全为 0(或 false),我可以在 C(++) 中检查吗?

java - 在java中链接对象引用

javascript - lightbox.js html5 视频不播放视频。我做错了什么?

javascript - 我的jquery ajax代码无故刷新页面

python - 在函数内连接 numpy 数组并返回它?

javascript - 将字符串与数组的值进行匹配