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