Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การหาระยะทางสั้นที่สุดระหว่างวัตถุใน JavaScript

มีออบเจกต์ที่แต่ละคีย์มีอาร์เรย์ของจุดระยะทาง ต้องเลือกจุดหนึ่งจากแต่ละออบเจกต์ เพื่อให้ความต่างระหว่างค่าสูงสุดและต่ำสุดของจุดที่เลือกน้อยที่สุด

ตัวอย่าง: {obj1: [0,10], obj2: [3,9], obj3: [5,12,14]} → เลือก [10,9,12] ระยะทาง = 12-9 = 3 (น้อยที่สุด)

ตัวอย่างโค้ด

const obj = { obj1: [0, 10], obj2: [3, 9], obj3: [5, 12, 14] };

const findNearest = (obj = {}) => {
  let parts = [undefined, undefined, undefined];
  let i, res;
  const data = Object.values(obj)
    .map((a, i) => a.map(v => [v, i]))
    .reduce((a, b) => a.concat(b))
    .sort((a, b) => a[0] - b[0] || a[1] - b[1]);
  for (i = 0; i < data.length; i++) {
    parts[data[i][1]] = data[i][0];
    if (parts.some(v => v === undefined)) continue;
    if (!res || Math.max(...parts) - Math.min(...parts) < Math.max(...res) - Math.min(...res)) {
      res = parts.slice();
    }
  }
  return res;
};

console.log(findNearest(obj));

ผลลัพธ์

ค่าที่แสดงในคอนโซลจะเป็นดังนี้:

[ 10, 9, 12 ]