我有一个我希望根据attr字符串类型字段排序的对象列表.我试过用-
list.sort(function (a, b) {
return a.attr - b.attr
})
Run Code Online (Sandbox Code Playgroud)
但发现-在JavaScript 中似乎不适用于字符串.如何根据类型字符串的属性对对象列表进行排序?
有一种快速的方法来对选择元素的项目进行排序吗?或者我不得不求助于编写javascript?
请任何想法.
<select size="4" name="lstALL" multiple="multiple" id="lstALL" tabindex="12" style="font-size:XX-Small;height:95%;width:100%;">
<option value="0"> XXX</option>
<option value="1203">ABC</option>
<option value="1013">MMM</option>
</select>
Run Code Online (Sandbox Code Playgroud) 我需要按如下方式对一组字母数字项进行排序.从:
2 xxx
20 axxx
38 xxxx
20 bx
8540 xxxxxx
Run Code Online (Sandbox Code Playgroud)
至:
8540 xxxxx
38 xxxx
20 axxx
20 bx
2 xxx
Run Code Online (Sandbox Code Playgroud)
因此,相对于数字按降序排序,然后按字母顺序升序.数字始终与字母字符(表示为"xxxx")之间由单个空格分隔,但数字是可变长度.
我怀疑我需要在sort()函数中使用一些正则表达式并按空格分割数字然后对其进行排序,但我不知道如何将字母顺序排序.任何代码示例?非常感谢!
所以我有一个排序方法,用于按字母顺序排序值,几乎在所有情况下都很好用:
function alphabetical(name1, name2):int {
if (name1 < name2){
return -1;
} else if (name1 > name2){
return 1;
}else {
return 0;
};
};
Run Code Online (Sandbox Code Playgroud)
但问题是,标题中包含一个数字.
例如:
['abc 8','abc 1','abc 10']
Run Code Online (Sandbox Code Playgroud)
会好起来的
['abc 1','abc 10','abc 8']
Run Code Online (Sandbox Code Playgroud)
但我需要发生的是按字母顺序排序,但当遇到数字时,会考虑数值,因此排序会返回
['abc 1','abc 8'.'abc 10']
Run Code Online (Sandbox Code Playgroud)
我希望有一些现有的正则表达式或算法可以做到这一点,但我担心我没有丝毫的线索来搜索.我对排序的所有搜索都按字母顺序或数字顺序进行,而不是两者都进行.
非常感谢!
我有下面这样的数组,我想通过字母数字排序,以更快的方式进行升序或降序。
[
"NFO:BANKNIFTY1931428900CE",
"NFO:BANKNIFTY1931429000CE",
"NFO:BANKNIFTY1931429500CE",
"NFO:BANKNIFTY1931429400CE",
"NFO:BANKNIFTY1931429300CE",
"NFO:BANKNIFTY1931429200CE"
]
Run Code Online (Sandbox Code Playgroud)
我想像下面这样排序,降序还是升序
[
"NFO:BANKNIFTY1931429500CE",
"NFO:BANKNIFTY1931429400CE",
"NFO:BANKNIFTY1931429300CE",
"NFO:BANKNIFTY1931429200CE",
"NFO:BANKNIFTY1931429000CE",
"NFO:BANKNIFTY1931428900CE",
]
Run Code Online (Sandbox Code Playgroud)
我尝试了以下类似的方法,但是它排序不正确,速度也很慢。
function sort() {
var arr = disorderedArray;
arr.sort(function(a, b) {
a = a.split(" ");
b = b.split(" ");
var an = parseInt(a[0], 10);
var bn = parseInt(b[0], 10);
return an < bn ? 1 : (an > bn ? -1 : (a[1] < b[1] ? -1 : (a[1] > b[1] ? 1 : 0)));
});
console.log(arr.reverse());
}
Run Code Online (Sandbox Code Playgroud)
注意:有时可能会混合使用小写字母。
我想将文件夹复制到 Google 云端硬盘内的主文件夹中。我的主要问题是当一列不为空而另一列为空白时创建一个函数。创建新文件夹后,必须将文件夹 URL 粘贴到其中一列中。
这是我到目前为止所拥有的:
function addData(){
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
var lr = activeSheet.getLastRow();
var lc = activeSheet.getLastColumn();
var sourceData = sourceSheet.getRange(1, 1, lr, lc).getValues();
for (row in sourceData) {
if (sourceData[row][0] !== "" && sourceData[row][19] !== "") {
var rowNum = parseInt(row);
//code will go here for Folder copying and renaming and getting the new folder url
activeSheet.getRange(rowNum+1,lc).setValue("Completed"); //we will eventually change Completed with the new Folder URL
}
}
}
Run Code Online (Sandbox Code Playgroud) javascript directory-structure google-apps-script google-drive-shared-drive