2722. Join Two Arrays by ID
Given two arrays arr1 and arr2, return a new array joinedArray. All the objects in each of the two inputs arrays will contain an id field that has an integer value. joinedArray is an array formed by merging arr1 and arr2 based on their id key. The length of joinedArray should be the length of unique values of id. The returned array should be sorted in ascending order based on the id key.
If a given id exists in one array but not the other, the single object with that id should be included in the result array without modification.
If two objects share an id, their properties should be merged into a single object:
-
If a key only exists in one object, that single key-value pair should be included in the object.
-
If a key is included in both objects, the value in the object from arr2 should override the value from arr1.
Example 1:
Input:
arr1 = [
{“id”: 1, “x”: 1},
{“id”: 2, “x”: 9}
],
arr2 = [
{“id”: 3, “x”: 5}
]
Output:
[
{“id”: 1, “x”: 1},
{“id”: 2, “x”: 9},
{“id”: 3, “x”: 5}
]
Explanation: There are no duplicate ids so arr1 is simply concatenated with arr2.
Example 2:
Input:
arr1 = [
{“id”: 1, “x”: 2, “y”: 3},
{“id”: 2, “x”: 3, “y”: 6}
],
arr2 = [
{“id”: 2, “x”: 10, “y”: 20},
{“id”: 3, “x”: 0, “y”: 0}
]
Output:
[
{“id”: 1, “x”: 2, “y”: 3},
{“id”: 2, “x”: 10, “y”: 20},
{“id”: 3, “x”: 0, “y”: 0}
]
Explanation: The two objects with id=1 and id=3 are included in the result array without modifiction. The two objects with id=2 are merged together. The keys from arr2 override the values in arr1.
Example 3:
Input:
arr1 = [
{“id”: 1, “b”: {“b”: 94},“v”: [4, 3], “y”: 48}
]
arr2 = [
{“id”: 1, “b”: {“c”: 84}, “v”: [1, 3]}
]
Output: [
{“id”: 1, “b”: {“c”: 84}, “v”: [1, 3], “y”: 48}
]
Explanation: The two objects with id=1 are merged together. For the keys “b” and “v” the values from arr2 are used. Since the key “y” only exists in arr1, that value is taken form arr1.文章来源:https://www.toymoban.com/news/detail-513158.html
Constraints:
- arr1 and arr2 are valid JSON arrays
- Each object in arr1 and arr2 has a unique integer id key
- 2 < = J S O N . s t r i n g i f y ( a r r 1 ) . l e n g t h < = 1 0 6 2 <= JSON.stringify(arr1).length <= 10^6 2<=JSON.stringify(arr1).length<=106
- 2 < = J S O N . s t r i n g i f y ( a r r 2 ) . l e n g t h < = 1 0 6 2 <= JSON.stringify(arr2).length <= 10^6 2<=JSON.stringify(arr2).length<=106
From: LeetCode
Link: 2722. Join Two Arrays by ID
文章来源地址https://www.toymoban.com/news/detail-513158.html
Solution:
Ideas:
This code first creates a Map object to store the objects in arr1 and arr2, keyed by their id. Then, it iterates through arr2 and merges each object with the existing object in the Map with the same id. If no object exists in the Map with the same id, the object is simply added to the Map. Finally, the Map is converted to an array and sorted by id. The sorted array is then returned.
Code:
/**
* @param {Array} arr1
* @param {Array} arr2
* @return {Array}
*/
var join = function(arr1, arr2) {
const idMap = new Map();
for (const obj of arr1) {
idMap.set(obj.id, obj);
}
for (const obj of arr2) {
const existingObj = idMap.get(obj.id);
if (existingObj) {
const mergedObj = {...existingObj, ...obj};
idMap.set(obj.id, mergedObj);
} else {
idMap.set(obj.id, obj);
}
}
const joinedArray = [...idMap.values()];
joinedArray.sort((a, b) => a.id - b.id);
return joinedArray;
};
到了这里,关于LeetCode //2722. Join Two Arrays by ID (Day 30 of LC JavaScript Challenage)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!