그래서이 문제를 해결하려고합니다.여러 기준으로 순위를 지정하여 컬렉션을 정렬하십시오.
우리는 다음과 같이 하나 개의 마스터 배열과 약간의 부하 배열이 있습니다
var master = [3, 2, 2, 4, 15, 8];
var minions = [
{
id : "Minion1",
imitation : [2, 1, 0, 3, 11, 5],
},
{
id : "Minion2",
imitation : [1, 3, 2, 1, 12, 7],
},
{
id : "Minion3",
imitation : [4, 3, 1, 1, 11, 6],
}
];
은 이제 부하가 마스터를 모방하려고한다고 가정합시다. 그리고 우리는 누가 더 나은 점수를 주 었는지 알 필요가 있습니다.
제한 : 은 - 부하 의 숫자가있을 수 있습니다 - 우리는 단지 숫자 값 비교 - 항상 같은
을 유지 배열의 숫자의 금액은 그래서 나는이 논리를 내놓았다 :
마스터의 해당 숫자에서 미니온 배열의 각 숫자를 빼고 이것의 절대 값을 얻습니다. 왜냐하면 마스터가 첫 번째 숫자 3을 가졌기 때문에, 미니언 1은 숫자 2를 가지고 미니언 3은 숫자 4를 갖기 때문입니다. 미니언 1과 미니언 3은 똑같이 마스터로부터 멀리 떨어져 있습니다.
각 미니언의 절대 값을 배열에 푸시합니다.
배열의 절대 값을 비교하고 배열의 각 숫자에 대해 미니언을 정렬합니다. 마스터 등 아마 어떤 [0]
- Minion1 [0]
- Minion3 [0]
- Minion2 [0]은 각각의 수에 대한 부하에
할당 포인트 배열은 서로에 비례하여 위치에 따라 다릅니다. 마스터 [0]에 대한
- Minion1 [0] +3 점
- Minion3 [0] +2 점
- Minion2 [0] +1 점
합계에게 포인트 미니언 배열의 각 숫자. 지금 더 나은 모방
이것은 내가 지금까지 무엇을 가지고 있습니다 : 모든
var Master = [3, 2, 2, 4, 15, 8];
var minions = [
{
id : "minion1",
mimic_result : [2, 1, 0, 3, 11, 5],
abs_values : [],
points : []
},
{
id : "minion2",
mimic_result : [1, 3, 2, 1, 12, 7],
abs_values : [],
points : []
},
{
id : "minion3",
mimic_result : [6, 0, 0, 0, 0, 1],
abs_values : [],
points : []
}
];
for(i=0;i<Master.length;i++){
for(j=0;j<minions.length;j++) {
var result = Math.abs(Master[i]-minions[j].mimic_result[i]);
minions[j].abs_values.push(result);
}
}
for(k=0;k<minions.length;k++) {
console.log(minions[k].result[0]);
}
console.log(minions[0].abs_values);
console.log(minions[1].abs_values);
console.log(minions[2].abs_values);
_something_을 계산하는 좋은 방법이지만 OP가 제안한 측정 항목과는 완전히 관련이 없습니다 (각 차원에서 따로 "부하"를 순위 지정하고 거리에 상관없이 ** 순위 **에 따라 점수를 지정). 한 명을 제외하고는 모든 좌표에서 올바른 모방을 가진 미니언을 생각해보십시오. 그러나 "원본으로부터의 거리"를 측정하는 것은 분명 더 깨끗한 접근법입니다. – hon2a
@ hon2a : 내 이해에서 OP는 어떤 점에 가장 가까운 배열을 찾고 싶습니다. 이것이 바로 "거리"입니다. 지금까지의 논리는 저에게이 일을 계산하려는 실패한 시도처럼 보입니다. 나는 그것을 따르지 않는 자유를 택했습니다. – georg
어쨌든, OP는 모든 것이 전부인 것을 명확히해야합니다. – georg