2017-05-24 183 views
0

标准脚标表。许多专栏。 如何在排序后保持相同的数字顺序?排序后保持相同的数字顺序(可放脚)

原文:

id | Book  | Views 
--------------------- 
1 | Book 1 | 3493 
2 | Book 2 | 3792 
3 | Book 3 | 4022 

通过查看排序后(DESC):

id | Book  | Views 
--------------------- 
3 | Book 3 | 4022 
2 | Book 2 | 3792 
1 | Book 1 | 3493 

但我需要这样的:

id | Book  | Views 
--------------------- 
1 | Book 3 | 4022 
2 | Book 2 | 3792 
3 | Book 1 | 3493 

的目标是,ID必须始终为1, 2,3排序后(但当然不是在寻呼后)

+0

因此,它是一个行号,而不是一个ID。 – James

回答

0

我相信你需要将你的数据与你的数据分开一点。我会用Arrays来说明。

比方说,我们有一个arr由3个对象组成的数组,包含我们的书籍。

testtest2都在迭代相同的数据,但只有test显示在你想要的庄园。这是因为不使用数据的ID进行显示,而是使用迭代索引。希望这可以推动你正确的方向。

var arr = [{ 
 
    id: 1, 
 
    name: "Book 1", 
 
    views: 100 
 
}, 
 
{ 
 
    id: 2, 
 
    name: "Book 2", 
 
    views: 200 
 
}, 
 
{ 
 
    id: 3, 
 
    name: "Book 3", 
 
    views: 300 
 
}]; 
 

 
function compare(a,b){ 
 
    if(a.views > b.views) 
 
    return -1; 
 
    if(b.views > a.views) 
 
    return 1; 
 
    return 0; 
 
} 
 

 
arr.sort(compare); 
 

 
for(var i=0; i<arr.length; i++){ 
 
    var elem = document.createElement("div"); 
 
    elem.innerHTML = "id:"+(i+1) + " "; 
 
    elem.innerHTML += "Name: "+arr[i].name + " "; 
 
    elem.innerHTML += "Views: "+arr[i].views; 
 
    console.log(arr[i].id); 
 
    document.getElementById("test").appendChild(elem); 
 
} 
 

 
for(var i=0; i<arr.length; i++){ 
 
    var elem = document.createElement("div"); 
 
    elem.innerHTML = "id:"+arr[i].id + " "; 
 
    elem.innerHTML += "Name: "+arr[i].name + " "; 
 
    elem.innerHTML += "Views: "+arr[i].views; 
 
    console.log(arr[i].id); 
 
    document.getElementById("test2").appendChild(elem); 
 
}
<div id="test"></div> 
 
<div id="test2"></div>

0

如果你正在尝试做的是每一行按顺序编号,jQuery的。每个()提供了一个迭代变量(在function(i)i)。行显示是i+1,因为像大多数javascript元素一样,each()是基于0的。

$("#mytable tbody tr").each(function(i){ 
    $(this).find("td:first").text(i+1); 
}); 
+0

**来自复审队列**:我可以请求您在源代码中添加一些上下文。仅有代码的答案很难理解。如果您可以在帖子中添加更多信息,它可以帮助提问者和未来的读者。 – RBT

相关问题