我试图以某种顺序(字母顺序/字母数字顺序)填充我的下拉菜单,但我的代码似乎没有工作。它填充了价值但不是有序的。
这是我的代码
function dropdown(){
var html = html + "<option value='All'>All</option>";
var colValue = getColumn("COLUMN");
for( var i = 0; i < colValue.length; i++ ) {
var valueRow = colValue[i];
html = html + "<option value='" + valueRow.c + "'>" + valueRow.c + "-" + valueRow.v + "</option>";
}
$('#id').append(html);
}
这里,COLUMN是保存值A1,A2,A3,B1
的键此代码按照A3,A1,A2,B1
的顺序填充我的下拉列表我希望我的下拉按照A1,A2,A3,B1
的顺序填充虽然我alert(html);
我得到了结果
<option value='All'>All </option>";
<option value='A3'>A3-a3Value </option>";
<option value='A2'>A1-a2Value </option>";
<option value='A1'>A2-a1Value </option>";
<option value='B1'>B1-b1Value </option>";
并且它以完全相同的顺序填充。
我的问题是,我需要做什么,按顺序填充我的下拉列表? 我还处于java脚本和Jquery的初学者阶段。感谢您的帮助
由于
答案 0 :(得分:0)
你可以试试这个:
function dropdown(){
var html = html + "<option value='All'>All</option>";
var colValue = getColumn("COLUMN");
colValue.sort();
for( var i = 0; i < colValue.length; i++ ) {
var valueRow = colValue[i];
html = html + "<option value='" + valueRow.c + "'>" + valueRow.c + "-" + valueRow.v + "</option>";
}
$('#id').append(html);
}
答案 1 :(得分:0)
根据你所说的,看起来colValue看起来像这样:
colValue = [
{ c="A3", v="a3Value" },
{ c="A1", v="a2Value" } // etc.
]
所以你需要决定要排序的属性,然后你可以创建一个比较器:
function createComparator(property) {
return function(a, b) {
return a[property] > b[property];
};
}
您可以这样使用它:
colValue.sort(createComparator("c"));
根据这个SO回答:How to sort javascript objects based on their properties, specifying the property
答案 2 :(得分:0)
由于valueRow
是一个对象而不是一个数组,并且您希望对valueRow.v
进行排序,因此您需要的不仅仅是Array.sort()
。
看看lodash的sortBy
:http://lodash.com/docs#sortBy
_.sortBy(valueRow, 'c')