繁体   English   中英

将 object 数组中的数据添加到 JavaScript 中的另一个数组

[英]add data from array of object to another in JavaScript

我有这个 object (1) 数组:

0: {sequence: 0, name: "........", start_time_planned_route: "08:00:00"}
1: {sequence: 1, name: "........", start_time_planned_route: "08:32:00"}
2: {sequence: 2, name: "........", start_time_planned_route: "08:40:00"}

正如我们所见, sequence从 0 排序到 2

我有另一个 object 数组(2):

0: {sequence: 2, name: "........", place: "A"}
1: {sequence: 0, name: "........", place: "B"}
2: {sequence: 1, name: "........", place: "C"}

我正在尝试将place从 object (2) 数组推到 object (1) 数组,其中 (2) 的序列等于 (1) 的序列。

output:

0: {sequence: 0, name: "........", start_time_planned_route: "08:00:00", place: "B"}
1: {sequence: 1, name: "........", start_time_planned_route: "08:32:00", place: "C"}
2: {sequence: 2, name: "........", start_time_planned_route: "08:40:00", place: "A"}

我尝试的是多个 for 循环和多个条件,我知道这是错误和错误的代码。

JavaScript 是否有简单的方法来做到这一点?

您可以使用mapfind

 const arr=[{sequence: 0, name: "........", start_time_planned_route: "08:00:00"}, {sequence: 1, name: "........", start_time_planned_route: "08:32:00"}, {sequence: 2, name: "........", start_time_planned_route: "08:40:00"}]; const places=[ {sequence: 2, name: "........", place: "A"}, {sequence: 0, name: "........", place: "B"}, {sequence: 1, name: "........", place: "C"}]; console.log(arr.map(p=>({...p, place:places.find(o=>o.sequence==p.sequence)?.place})));

好吧,您可以使用 for 和条件来执行此操作,或者您可以使用数组方法。
这是一个简单易懂的解决方案

 array1=[{sequence: 0, name: "........", start_time_planned_route: "08:00:00"}, {sequence: 1, name: "........", start_time_planned_route: "08:32:00"}, {sequence: 2, name: "........", start_time_planned_route: "08:40:00"}] array2=[{sequence: 2, name: "........", place: "A"}, {sequence: 0, name: "........", place: "B"},{sequence: 1, name: "........", place: "C"}] for(let i = 0; i< array2.length; i++) { for(let j=0; j<array1.length; j++) if (array2[j]['sequence'] == array1[i]['sequence']) array1[i]['place'] = array2[j]['place'] } console.log(array1); console.log(array2);

这是另一个:

 array1=[{sequence: 0, name: "........", start_time_planned_route: "08:00:00"}, {sequence: 1, name: "........", start_time_planned_route: "08:32:00"}, {sequence: 2, name: "........", start_time_planned_route: "08:40:00"}] array2=[{sequence: 2, name: "........", place: "A"}, {sequence: 0, name: "........", place: "B"},{sequence: 1, name: "........", place: "C"}] array1.forEach(function(v,i,a){a[i]['place']=( this.filter(function(v2){return (v2['sequence'] == v['sequence']) })[0]['place']) }, array2) console.log(array1); console.log(array2);

最后一个解决方案更严格。 它迭代 array1 并为每个项目过滤 array2 的项目,其序列等于 array1 的项目序列。
注意:我认为属性序列在两个数组(关键字段)中都是唯一的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM