我需要找到类的位置。我有以下多维数组:
var myData = {
0 : {
stdid : 1,
marks : 98,
pos : ,
},
1 : {
stdid : 2,
marks : 90,
pos : ,
},
2 : {
stdid : 3,
marks : 77
pos : ,
},
3 : {
stdid : 4,
marks : 98,
pos : ,
},
4 : {
stdid : 5,
marks : 66,
pos : ,
},
}
我需要这个数组来填充每个索引的位置,如下所示
var myPositionData = {
0 : {
stdid : 1,
marks : 98,
pos : 1,
},
1 : {
stdid : 2,
marks : 90,
pos : 2,
},
2 : {
stdid : 3,
marks : 77
pos : 3,
},
3 : {
stdid : 4,
marks : 98,
pos : 1,
},
4 : {
stdid : 5,
marks : 66,
pos : 4,
},
}
我想做的是计算阶级的位置。
这里非常简单的解决方案。只需迭代数组并直接添加位置键即可。
for(var key in myData) {
if(myData.hasOwnProperty(key)) {
myData[key].pos = key+1;
}
}
你那里有一个对象而不是数组。如果你想使用一个数组,看看这个
var myPositionData = [{
stdid: 1,
marks: 98,
}, {
stdid: 2,
marks: 90,
}, {
stdid: 3,
marks: 77,
}, {
stdid: 4,
marks: 98,
}, {
stdid: 5,
marks: 66,
}]
function compare(a, b) {
if (a.marks < b.marks) return 1;
if (a.marks > b.marks) return -1;
return 0;
}
myPositionData.sort(compare);
var currentPositions = 1;
for (var i = 0; i < myPositionData.length; i++) {
myPositionData[i].pos = currentPositions;
if (!(i < myPositionData.length - 2 && compare(myPositionData[i], myPositionData[i + 1]) == 0)) {
currentPositions++;
}
}
console.log(myPositionData)
$total = count($myData);
for($a=0; $a<$total;$a++)
{
$myData[$a]['pos'] = $a+1;
}