首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按数组2的ID对数组1排序。同时根据数组2从数组1中删除和添加元素

按数组2的ID对数组1排序。同时根据数组2从数组1中删除和添加元素
EN

Stack Overflow用户
提问于 2019-06-13 07:12:33
回答 3查看 89关注 0票数 0

我有两个数组。每个都填满了唯一的识别码。我想取第一个数组

代码语言:javascript
运行
复制
array1 = [ 
    {"name":"sos", "id":112},
    {"name":"apa", "id":671},
    {"name":"dos", "id":003},
]

并根据每个ID值使其顺序与array2的顺序相匹配。这样array1的每个id都等于array2,反之亦然。换句话说,对于每个小于或等于数组长度的x值,array1x.id,==,array2x.id。

代码语言:javascript
运行
复制
array2 = [ 
    {"name":"sqe", "id":671},
    {"name":"pep", "id":003},
    {"name":"try", "id":163},
]

我还想删除array1中在array2中没有对应id的任何元素。并将id值不在array1但在array2中的任何元素添加到array1中,同时再次根据其id号对其进行排序。Array1必须保留与每个id值相关联的名称,但是当添加新元素时,可以将其名称设置为array2中与其相关的id的名称。

我似乎无法在不遇到可能搞乱我的订单的特殊情况下实现这一点。

EN

回答 3

Stack Overflow用户

发布于 2019-06-13 07:17:27

array2构建一个数组,给出每个id值的索引:

代码语言:javascript
运行
复制
var indexes = array2.reduce(function(map, entry, index) {
  map[entry.id] = index;
  return map;
}, {});

现在,您可以从array1创建一个新阵列

代码语言:javascript
运行
复制
var newArray1 = array1.reduce(function(a, entry) {
  a[indexes[entry.id]] = entry;
  return a;
}, []);

现在,在您的示例数据中,您的array2没有包含array1中存在的所有id值。从你的问题看,在这种情况下应该怎么做并不清楚。

一种方法是从array2中的所有id值创建一个查找表,然后将array1中缺少的id值与一些更大的索引值添加到该表中。

票数 0
EN

Stack Overflow用户

发布于 2019-06-13 07:38:24

  • 它会像array1:
  • 一样排序
  • 如果array2 1中不存在

,它会删除数组中的项

代码语言:javascript
运行
复制
array1 = [ {"name":"sos", "id":112},{"name":"apa", "id":671},{"name":"dos", "id":003}]
array2 = [ {"name":"sqe", "id":671},{"name":"pep", "id":003},{"name":"try", "id":163}]

array2 = array2.filter((item2, i) => {
   let match = false;
   array1.forEach((item1, j) => {
       if(item1.id == item2.id) return match = true;
   })
   return  match
})

console.log(array1)
console.log(array2)

票数 0
EN

Stack Overflow用户

发布于 2019-06-13 07:47:17

通过array1构建地图

代码语言:javascript
运行
复制
let map1 = new Map(array1.map(e => [e.id, e]))

然后迭代您的array2并将每个项目映射到array1中对应的项目。

代码语言:javascript
运行
复制
let newArray1 = array2.map(e => map1.get(e.id));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56571451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档