如何测试数组列中的单元格中的数字或字符串
How do I test cells in an array column for number or string
我有一个多维数组,我想对其中一列进行排序。
我在另一个问题中发现了这种方法,只要你知道单元格值的类型(只有数字),它就可以很好地工作。
var arr = [
[12, 'AAA', '3ab'],
[12, 'BBB', '5ac'],
[12, 'CCC', '9tt'],
[28, 'DDD', 'cpo'],
[18, 'CCC', 'ert'],
[12, 'DDD', 'jet'],
[18, 'CCC', 'o55'],
[28, 'DDD', 'y65'],
[28, 'DDD', '549'],
[58, 'BBB', '772'],
[68, 'BBB', '999'],
[78, 'BBB', '3p5']
];
arr.sort(function(a,b) {
return a[0]-b[0]
});
--我想做的是在排序之前测试一个数字或字符串的单元格值。--这是怎么做到的?
我想我需要提供更多的信息——很抱歉我解释得很笨拙。
1)我想一次只对一列进行排序
2)*排序之前,我想测试特定列的内容是数字还是字符串,因为排序方式不同-
a[0]-b[0]
与
a[0]lt b[0](lt=小于)
最简单的方法是说列中的所有单元格都定义为一个字符串,然后测试这些单元格是否都是数字。*
3)如果它们都是数字,我会使用a[0]-b[0]排序,而不是a[0]
希望这能比以前更好地解释它。
如果你想按数组中的第一个值排序,然后按第二个值排序的话,你需要这样的东西:
arr.sort(function(a,b) {
var first = a[0] - b[0];
return (first === 0 ? (a[1] > b[1] ? 1 : (a[1] < b[1] ? -1 : 0)) : first);
});
// Result:
[[12,"AAA"],[12,"BBB"],[12,"CCC"],[12,"DDD"],[18,"CCC"],[18,"CCC"],[28,"DDD"],[28,"DDD"],[28,"DDD"],[58,"BBB"],[68,"BBB"],[78,"BBB"]]
或者,没有三元简写:
arr.sort(function(a,b) {
var first = a[0] - b[0]; // Difference between the 2 numeric values (a[0], b[0])
if (first === 0) { // If the numeric values are equal
if (a[1] > b[1]) { // Return a order depending on the string values (a[1], b[1])
return 1;
}
if (a[1] < b[1]) {
return -1;
}
return 0; // The string values are the same, so return `0`
}
return first; // The numeric values are not the same, so return the difference as sort result.
});
// Result:
[[12,"AAA"],[12,"BBB"],[12,"CCC"],[12,"DDD"],[18,"CCC"],[18,"CCC"],[28,"DDD"],[28,"DDD"],[28,"DDD"],[58,"BBB"],[68,"BBB"],[78,"BBB"]]
可运行样本:
var arr = [[12,'AAA'],[12,'BBB'],[12,'CCC'],[28,'DDD'],[18,'CCC'],[12,'DDD'],[18,'CCC'],[28,'DDD'],[28,'DDD'],[58,'BBB'],[68,'BBB'],[78,'BBB']];
var sorted = arr.sort(function(a,b){
var first=a[0]-b[0];
return(first===0?(a[1]>b[1]?1:(a[1]<b[1]?-1:0)):first);
})
alert(JSON.stringify(sorted));
您可以使用此函数检查值是否为数字
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
相关文章:
- 使用jquery在单击时在单元格中输入值
- CSS-若窗口太小,滚动条会出现在“表格”单元格上
- 可以'我不明白为什么;t将行和单元格添加到表中
- 如何在Angular中的表的所有单元格中添加链接
- 表中单元格的总和
- ExtJS网格单元格编辑器,防止焦点松动问题
- 有没有一种方法可以仅使用HTML/CSS来隐藏基于特定值的数据单元格
- 根据输入字段中键入的数字更改td单元格的颜色
- 如果随机数字是3-Javascript的倍数,则将表单元格更改为红色
- 如何使用Javascript和HTML DOM在表的特定单元格中显示数字
- 如何测试数组列中的单元格中的数字或字符串
- 如何只允许在jqGrid单元格编辑中使用数字
- 如何根据特定的表格单元格将数字缩减为文本输入框
- 如果value =<我可以让表格单元格有不同的背景颜色吗?使用jquery或PHP获取特定的数字
- 从表格单元格中选择值/文本/数字
- Javascript使用for循环累加器向表单元格id添加数字
- 如何在一定时间后将数字添加到表格单元格中
- 如何验证单元格在 spreadjs 中是否正好有 10 位数字
- 手控表 - 文本在数字单元格上对齐
- 确定行单元格中的最低数字