【发布时间】:2018-10-15 20:21:19
【问题描述】:
我真的希望你能帮助我我有一个对象数组,我需要一个算法或一个指向某些东西的指针来阅读,以便根据与邻居的相似性对它们进行排序。
举例
[
{a:12,b: 7,c: 5},
{a: 5,b: 5,c: 5},
{a: 3,b: 3,c: 3},
{a: 5,b: 7,c: 5},
{a:12,b: 7,c: 5}
]
变成
[
{a: 5,b: 5,c: 5},
{a: 5,b: 7,c: 5},
{a:12,b: 7,c: 5},
{a:12,b: 7,c: 5},
{a: 3,b: 3,c: 3},
]
我这里有一个 REPL...
https://repl.it/@idrise/ThoseWellmadeMonitors
我已经暴力破解了它,但它没有得到最好的分数,而且它在大型阵列上花费了很多时间。
分数是这样计算的,分数越高越好!
function scoreArray(array) {
let score = 0;
for (let f = 1; f < array.length; f++) {
score += howSimilarAreObjects(array[f - 1], array[f]);
}
return score;
}
function howSimilarAreObjects(object1, object2) {
let score = 0;
Object.keys(object1).forEach(curValue => {
if (object1[curValue] === object2[curValue]) {
score++;
}
});
return score;
}
非常感谢任何帮助,
伊德里斯
【问题讨论】:
-
为什么
c属性按降序排序,而其他属性按升序排序..? -
“相似度”是什么意思?
{3, 3, 3}与{5, 5, 5}的相似度与{12, 7, 5}的相似度有何不同? -
您可能想查找“余弦相似度”的 JavaScript 实现
-
similarity measure 不提供排序所需的ordering。或者您是否尝试通过它们与特定其他元素的相似性对它们进行降序排序?
-
repl 中是描述所需输出的评分函数。我手动对结果进行排序。顺序并不重要,与具有匹配字段的对象的接近度很重要。
标签: javascript node.js algorithm computer-science