我的 o/p 中有两个数组,一个是结果数组,另一个是数据数组如何将两个数组合并到一个与坐标匹配的数组中



如何将两个数组合并为一个数组,将第一个数组坐标与第二个数组的originToDestinedpointDirectionUrl lat and long匹配?

我已经使用了object.assign 并合并了两个数组,但我没有看到结果数组和数据数组中的坐标匹配

o/p:
{
"result": [
{
"id": "2X56cPnr0mvS9Cq8MAW1jQ",
"alias": "the-hot-tomato-fruita",
"name": "The Hot Tomato",
"coordinates": {
"latitude": 39.1594399,
"longitude": -108.732141
}
},
{
"id": "bGNVfuaRoIpPdUKsfROfZQ",
"alias": "camillas-kaffe-fruita",
"name": "Camilla's Kaffe",
"coordinates": {
"latitude": 39.1588374652023,
"longitude": -108.732291567344
}
},
{
"id": "jZtuJxbKfS8s4QCe_TrTxw",
"alias": "colorado-national-monument-fruita",
"name": "Colorado National Monument",
"coordinates": {
"latitude": 39.097564,
"longitude": -108.7387526
}
}
],
"data": [
{
"originToDestinedpointDirectionUrl": "https://www.google.com/maps/dir/Los Angeles, CA, USA/39.097564,-108.7387526"
},
{
"originToDestinedpointDirectionUrl": "https://www.google.com/maps/dir/Los Angeles, CA, USA/39.1594399,-108.732141"
},
{
"originToDestinedpointDirectionUrl": "https://www.google.com/maps/dir/Los Angeles, CA, USA/39.1588374652023,-108.732291567344"
}

] }

预期 O/P:

{
"third array": [
{
"id": "2X56cPnr0mvS9Cq8MAW1jQ",
"alias": "the-hot-tomato-fruita",
"name": "The Hot Tomato",
"coordinates": {
"latitude": 39.1594399,
"longitude": -108.732141
},
"originToDestinedpointDirectionUrl": "https://www.google.com/maps/dir/Los Angeles, CA, USA/39.1594399,-108.732141"
},
{
"id": "bGNVfuaRoIpPdUKsfROfZQ",
"alias": "camillas-kaffe-fruita",
"name": "Camilla's Kaffe",
"coordinates": {
"latitude": 39.1588374652023,
"longitude": -108.732291567344
},
"originToDestinedpointDirectionUrl": "https://www.google.com/maps/dir/Los Angeles, CA, USA/39.1588374652023,-108.732291567344"
},
{
"id": "jZtuJxbKfS8s4QCe_TrTxw",
"alias": "colorado-national-monument-fruita",
"name": "Colorado National Monument",
"coordinates": {
"latitude": 39.097564,
"longitude": -108.7387526
},
"originToDestinedpointDirectionUrl": "https://www.google.com/maps/dir/Los Angeles, CA, USA/39.097564,-108.7387526"
}
]

let op = {
"result": [
{
"id": "2X56cPnr0mvS9Cq8MAW1jQ",
"alias": "the-hot-tomato-fruita",
"name": "The Hot Tomato",
"coordinates": {
"latitude": 39.1594399,
"longitude": -108.732141
}
},
{
"id": "bGNVfuaRoIpPdUKsfROfZQ",
"alias": "camillas-kaffe-fruita",
"name": "Camilla's Kaffe",
"coordinates": {
"latitude": 39.1588374652023,
"longitude": -108.732291567344
}
},
{
"id": "jZtuJxbKfS8s4QCe_TrTxw",
"alias": "colorado-national-monument-fruita",
"name": "Colorado National Monument",
"coordinates": {
"latitude": 39.097564,
"longitude": -108.7387526
}
}
],
"data": [
{
"originToDestinedpointDirectionUrl": "https://www.google.com/maps/dir/Los Angeles, CA, USA/39.097564,-108.7387526"
},
{
"originToDestinedpointDirectionUrl": "https://www.google.com/maps/dir/Los Angeles, CA, USA/39.1594399,-108.732141"
},
{
"originToDestinedpointDirectionUrl": "https://www.google.com/maps/dir/Los Angeles, CA, USA/39.1588374652023,-108.732291567344"
		 }
] };
let resultArr = op.result;
let dataArr = op.data;
let thirdArray = [];
dataArr.forEach(data => {
let splittedArr = data.originToDestinedpointDirectionUrl.split("/");
let coordinate = splittedArr[splittedArr.length-1].split(",");
let corLat = coordinate[0];
let corLong = coordinate[1];
resultArr.forEach(res => {
if(res.coordinates.latitude == corLat && res.coordinates.longitude == corLong){
thirdArray.push({ "id": res.id, "alias": res.alias, "name": res.name, "coordinates": res.coordinates, "originToDestinedpointDirectionUrl": data })
}
});
});
console.log(thirdArray);

为了抓取坐标并在之后进行比较,涉及一些字符串拆分。如果这不是您要找的,请告诉我

您可以通过具有如下所示的逻辑来实现这一点。我使用map来创建具有所需对象结构的新数组,并添加了用于在映射回调中将坐标与URL映射的逻辑。

let obj = {
"result": [
{
"id": "2X56cPnr0mvS9Cq8MAW1jQ",
"alias": "the-hot-tomato-fruita",
"name": "The Hot Tomato",
"coordinates": {
"latitude": 39.1594399,
"longitude": -108.732141
}
},
{
"id": "bGNVfuaRoIpPdUKsfROfZQ",
"alias": "camillas-kaffe-fruita",
"name": "Camilla's Kaffe",
"coordinates": {
"latitude": 39.1588374652023,
"longitude": -108.732291567344
}
},
{
"id": "jZtuJxbKfS8s4QCe_TrTxw",
"alias": "colorado-national-monument-fruita",
"name": "Colorado National Monument",
"coordinates": {
"latitude": 39.097564,
"longitude": -108.7387526
}
}
],
"data": [
{
"originToDestinedpointDirectionUrl": "https://www.google.com/maps/dir/Los Angeles, CA, USA/39.097564,-108.7387526"
},
{
"originToDestinedpointDirectionUrl": "https://www.google.com/maps/dir/Los Angeles, CA, USA/39.1594399,-108.732141"
},
{
"originToDestinedpointDirectionUrl": "https://www.google.com/maps/dir/Los Angeles, CA, USA/39.1588374652023,-108.732291567344"
}
] }
let finalArray = obj.result.map((element) => {
let url = obj.data.find((urlObj) => urlObj.originToDestinedpointDirectionUrl.indexOf(`${element.coordinates.latitude},${element.coordinates.longitude}` > -1))
element.originToDestinedpointDirectionUrl = url.originToDestinedpointDirectionUrl;
return element;
})
console.log(finalArray);

最新更新