【发布时间】:2015-07-21 17:06:51
【问题描述】:
我在读完这篇文章后试图写一个过滤器:custom angular filter
起初看起来很简单,但我遇到了这个问题。
我想通过检测类型来对对象数组进行排序,并在选择选项值中显示该排序列表。
您可以在此处查看不同的数组对象和我的代码:jsfiddle。
age 的值可以是以下类型:
1)数字
$scope.userDetails = [
{"id":"1","name":"Name1","age":"20"},{"id":"2","name":"Name2","age":"5"},
{"id":"5","name":"Name3","age":"15"},{"id":"4","name":"Name4", "age":"1"},
{"id":"3","name":"Name5","age":"101"},{"id":"6","name":"Name6", "age":"51"},
];
2) 字符串
$scope.userDetails = [
{"id":"1","name":"Name1","age":"ten"},{"id":"2","name":"Name2","age":"hundred"},
{"id":"4","name":"Name3","age":"six"},{"id":"6","name":"Name4", "age":"one"},
{"id":"5","name":"Name5","age":"seven"},{"id":"3","name":"Name6", "age":"hundred and one"},
];
3) 两者(同时具有字符串和数字类型)
$scope.userDetails = [
{"id":"3","name":"Name1","age":"20"},{"id":"1","name":"Name2","age":"hundred"},
{"id":"5","name":"Name3","age":"six"},{"id":"2","name":"Name4", "age":"1"},
{"id":"6","name":"Name5","age":"seven"},{"id":"4","name":"Name6", "age":"hundred and one"},
];
如果不同的年龄值仅是数字类型,我希望有一个按数字排序的选择选项,如果不是,那么我想按字符串排序。
谢谢
编辑:1
我想我的问题可能让你们中的一些人感到困惑。我会在这里尝试解释清楚一点
对于 (1) 情况:
我们只有年龄 ["20","5","15","1","101","51"] 的整数值(仅显示每个对象的年龄值)。现在,当我应用过滤器进行排序时,它应该像整数比较一样进行比较,输出应该是 - ["1","5","15","20","51","101"](所以我认为我们必须在过滤器中使用 regex 或 parseInt 将它们转换为数字并进行比较,但输出仍应为字符串。)
输入字符串,输出字符串,比较整数
对于 (2) 情况:
我们只有年龄的整数值[“十”,“百”,“六”,“一”,“七”,“百零一”](仅显示每个对象的年龄值)。现在当我应用过滤器进行排序时,它应该像字符串比较一样比较,输出应该是 - ["hundred", "hundred and one", "one", "seven", "six", "ten"]
输入字符串、输出字符串、比较字符串
对于 (3) 情况:
我们只有年龄的整数和字符串值 ["20", "hundred", "six", "1", "7", "hundred and one"] (仅显示年龄值每个对象)。现在,当我应用过滤器进行排序时,它应该像字符串比较一样比较,输出应该是 - ["1", "20", "hundred", "hundred and one", "seven", "six"]
输入字符串、输出字符串、比较字符串
谢谢,
【问题讨论】:
-
从 UI 的角度来看,这似乎令人困惑。可以将字符串类型转换为数字吗?
-
no...其实我想做的是1)如果是数字的话。它应该将其视为要比较的数字——也就是说,您可以使用 parseInt、parseFloat 之类的东西。 示例: "11","5","15" ... 应该排序为 - "5", "11" ,"15" 而不是 " 11","15","5" 2) 如果是字符串,应该进行字符串比较 - Ex: "one","two","sample" ... 应该排序为 - "one", "sample","two" 请注意字符串类型比较 3) str 和 number Ex: "one","two","17","15" ... 应该排序为 - "15","17","one", "two" 请注意字符串类型比较 非常感谢你们
标签: arrays angularjs sorting angularjs-filter