javascript - 通过创建对象道具将两个数组合并为一个,同时保持位置 - 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}, ... ]
但老实说,这甚至看起来不像一个数组,所以我不知道
非常感谢一些帮助
解决方案
更简单的方法 - 创建具有两个字段的对象数组:“名称”和“持续时间”</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);
推荐阅读
- git - 克隆并分叉一个 repo 以在本地使用。当我 npm install 时,我收到一个错误:无法从远程存储库中读取
- sql - 如何更新外键?
- c# - 努力循环一个列表或数组 datagridviewrows,我如何循环一个 datagridviewrow 列表?
- dart - Flutter 和 Dart - 如何在一行代码中格式化整数日期
- mysql - 在 WHERE IN(子查询)中保持顺序
- typescript - 为什么 TypeScript 错误地推断返回类型?
- react-native - 包含 maven { url "$rootDir/../node_modules/react-native/android" } 时出错
- r - 使用 R 中的自定义标头和密钥对 COINAPI REST API 进行授权的问题
- firebase - 如何在 Firebase 中重命名具有多个字段和集合(对象)的“主”文档?
- javascript - 检测数组中的任何元素是否包含连字符