JavaScript中对象之间的最短距离

假设我们有一个像这样的数组对象-

const obj = {

   obj1: [ 0, 10 ],

   obj2: [ 3, 9 ],

   obj3: [ 5, 12, 14 ]

};

我们需要编写一个JavaScript函数,该函数接受一个这样的数组对象。请注意,每个对象都有一个以上的距离点,但只能选择一个与其他obj的距离点组合。

我们可以根据上述距离点以12种方式组合三个对象。

例如,它可能变成-

[0,3,5];

在这种情况下,三个对象之间的总距离将为5-0,即5;

或者它可以变为[10,9,5],并且距离为-

10 − 5 = 5;

组合也可以是[0,3,12]并且距离是-

12 − 0 = 12;

我们打算实现的是找到最短的组合,在这种情况下应为[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;

   let 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 ]

以上是 JavaScript中对象之间的最短距离 的全部内容, 来源链接: utcz.com/z/316011.html

回到顶部