首页 > 解决方案 > 通过创建对象道具将两个数组合并为一个,同时保持位置 - Javascript

问题描述

我整个早上都在用头撞墙,试图弄清楚这一点。我正在使用 Google Distance Matrix API,从中我得到了一组旅行持续时间(以秒为单位),我需要将完全相同的排序应用于我由海滩名称组成的另一个硬编码数组。然后,在我得到一个数组 Beach Name - Durations 元素后,我需要按基本升序对它们进行排序。但是必须对我认为必须是嵌套对象的对象进行排序。这是我正在使用的:

// Array of beach names
beachNamesArr = ["Kill Devil Hills Beach", "Wrightsville Beach", "Oak Island Beach", "Myrtle Beach", "Isle Of Palms Beach", "Hilton Head Island Beach", "Tybee Island Beach", "Saint Simons Island Beach", "Fernandina Beach", "Neptune Beach", "Saint Augustine Beach", "Daytona Beach", "Cape Canaveral Beach", "Palm Beach", "Fort Lauderdale Beach", "Miami Beach", "Naples Beach", "Clearwater Beach", "Alligator Point Beach", "Panama City Beach", "Pensacola Beach", "Gulf Shores Beach", "Dauphin Island Beach", "Biloxi Beach", "Bay Saint Louis Beach"]

// Array of trip durations from users current location in seconds
durationArr = [32943, 22969, 22879, 20306, 19709, 15659, 14489, 16924, 19328, 19551, 20918, 23180, 25435, 31079, 33490, 34425, 31316, 25289, 19107, 17924, 18420, 19589, 19231, 20520, 22181]

我需要两个数组中的元素位置保持不变,因为 Kill Devil Hills 是 32943 秒,默特尔海滩是 20306 秒等等。然后我只需要根据它们的持续时间对它们进行升序排序。

我假设新数组必须看起来像:

combinedArr = ['Kill Devil Hills': {duration: 32943}, ... ] 

但老实说,这甚至看起来不像一个数组,所以我不知道

非常感谢一些帮助

标签: javascriptarraysgoogle-mapsmerge

解决方案


更简单的方法 - 创建具有两个字段的对象数组:“名称”和“持续时间”</p>

[{ 名称:“某个名称”,持续时间:1234 },...]

// Array of beach names
beachNamesArr = ["Kill Devil Hills Beach", "Wrightsville Beach", "Oak Island Beach", "Myrtle Beach", "Isle Of Palms Beach", "Hilton Head Island Beach", "Tybee Island Beach", "Saint Simons Island Beach", "Fernandina Beach", "Neptune Beach", "Saint Augustine Beach", "Daytona Beach", "Cape Canaveral Beach", "Palm Beach", "Fort Lauderdale Beach", "Miami Beach", "Naples Beach", "Clearwater Beach", "Alligator Point Beach", "Panama City Beach", "Pensacola Beach", "Gulf Shores Beach", "Dauphin Island Beach", "Biloxi Beach", "Bay Saint Louis Beach"]

// Array of trip durations from users current location in seconds
durationArr = [32943, 22969, 22879, 20306, 19709, 15659, 14489, 16924, 19328, 19551, 20918, 23180, 25435, 31079, 33490, 34425, 31316, 25289, 19107, 17924, 18420, 19589, 19231, 20520, 22181]

var beaches = beachNamesArr
  .map((name, index) => ({ name: name, duration: durationArr[index] }))
  .sort((a, b) => a.duration - b.duration)
console.log(beaches);


推荐阅读