我需要在陣列中包含這樣的緯度/經度點:
/*
var polylinePoints = [
[37.781814, -122.404740],
[37.781719, -122.404637],
[37.781489, -122.404949],
[37.780704, -122.403945],
[37.780012, -122.404827]
];
*/
但我需要先按第三個引數(即時間戳)對其進行排序?怎么做?我知道如何在 PHP 中做到這一點,但在 JS 中不知道
var polylineTimestamp = [
[37.781814, -122.404740, 1666543938],
[37.781719, -122.404637, 1666543938],
[37.781489, -122.404949, 1666543938],
[37.780704, -122.403945, 1666543938],
[37.780012, -122.404827, 1666543938]
];
然后我需要洗掉(修剪)排序陣列(洗掉時間戳)以獲得類似折線點的東西。
這是 Jsfiddle: https ://jsfiddle.net/qsdaLz7h/
uj5u.com熱心網友回復:
陣列.sort(),.map()將帶你到那里。您可以將它們組合起來,但是當它們分開時,您會更容易遵循邏輯,如下所示。
// I changed your original timestamps to give some difference
var polylineTimestamp = [
[37.781814, -122.404740, 1666543958],
[37.781719, -122.404637, 1666543948],
[37.781489, -122.404949, 1666543968],
[37.780704, -122.403945, 1666543938],
[37.780012, -122.404827, 1666543998]
];
// sort polylineTimestamp by third parameter (timestamp) older first
var sortedarray = polylineTimestamp.sort((a,b)=> {
return a[2] - b[2];
});
// Remove timestamp from resulting array
var polylinePoints = sortedarray.map(el => {
return [el[0],el[1]];
});
// Log to console
console.log(polylinePoints)
uj5u.com熱心網友回復:
你可以做一個臨時變數
let arr = []
polylineTimestamp.forEach((el) => {
arr.push([el[0],el[1]])
})
console.log(arr)
//! expected output would be
arr = [
[ 37.781814, -122.40474 ],
[ 37.781719, -122.404637 ],
[ 37.781489, -122.404949 ],
[ 37.780704, -122.403945 ],
[ 37.780012, -122.404827 ]
]
您還可以獲得一個新的 arr,它可以過濾以不從原始 arr 獲取索引 2
uj5u.com熱心網友回復:
這是你的回答者:
const TIMESTAMP_POSITION = 2
var polylineTimestamp = [
[37.781814, -122.404740, 1666540000],
[37.781719, -122.404637, 1666541000],
[37.781489, -122.404949, 1666542000],
[37.780704, -122.403945, 1666543000],
[37.780012, -122.404827, 1666544000]
];
polylineTimestamp.sort(function (a, b) {
// Turn your timestamp number into dates, and then subtract them
// to get a value that is either negative, positive, or zero.
return new Date(b[TIMESTAMP_POSITION]) - new Date(a[TIMESTAMP_POSITION]);
})
//map to remove timestamp
var polyLineArray = polylineTimestamp.map(function (polyLine) {
return [polyLine[0], polyLine[1]]
})
我使用 sort 函式使用時間戳的日期轉換對初始陣列進行排序。
僅映射陣列以洗掉時間戳時
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/522673.html
