У меня есть массив небольших массивов. Малые массивы - это идентификаторы объектов, которые принадлежат друг другу.JavaScript сортировка по массиву в массиве на основе расчета
faces = [[0,1,2,3], [4,5,6,7], [0,3,7,4], [1,2,5,6], [ 0,1,5,4], [2,3,7,6]];
Я хочу сортировать грани массива на основе вычисления значений внутри меньших массивов. Каждое значение представляет собой z-значение.
установки параметров:
- У меня есть массив объектов, названных объектов.
- Каждый объект имеет массив векторов, названных векторами.
- Каждый вектор имеет три координаты: x, y, z.
- Каждый объект также имеет массив, называемый лицами.
- Faces - это массив меньшего массива идентификаторов для векторов. Каждый малый массив представляет собой кластер векторов.
Что я хочу сделать, так это отсортировать грани массива на основе среднего значения z-значения, которое представлено внутри небольших массивов.
Я основывая свою попытку на этом:
myArray.sort(function(a,b){
return b-a;
})
Это то, что я до сих пор с точки зрения сортировки объектов [я] .faces массив:
objects[i].faces.sort(function(a,b){
var value1=0;
var value2=0;
for (var j = 0; j<objects[i].faces[a].length; j++) {
value1+=objects[i].vectors[faces[a][j]].z;
}
for (var j = 0; j<objects[i].faces[b].length; j++) {
value2+=objects[i].vectors[faces[b][j]].z;
}
return value1/objects[i].faces[a].length-value2/objects[i].faces[b].length;
})
В настоящее время она жалуется что он не может прочитать свойство «длина» undefined.
вы можете включать в себя значение 'vectors', а также ожидаемый результат? –
' 'Ā' и b' уже относятся к массиву в 'faces'. – thgaskell