我需要找到班级的位置。 我有多维数组,如下所示:
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,
},
}
我要做的是计算班级的位置。
答案 0 :(得分:0)
你所拥有的是一个对象而不是一个数组。如果你想使用一个数组看看这个
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)
答案 1 :(得分:0)
这里非常简单的解决方案。只需迭代数组并直接添加位置键。
for(var key in myData) {
if(myData.hasOwnProperty(key)) {
myData[key].pos = key+1;
}
}
答案 2 :(得分:0)
$total = count($myData);
for($a=0; $a<$total;$a++)
{
$myData[$a]['pos'] = $a+1;
}