【发布时间】:2018-01-16 09:45:44
【问题描述】:
假设我有一个数组如下:
var numArray = [ 1, 2, 1, 2, 1, 1, 3, 2, 1, 3 ];
我可以通过以下方式轻松获得最大值:
Math.max.apply(Math, array);
但是如果我有一个如下的数组呢:
var stringArray = [ "Foo", "Very Foo", "Not So Foo",
"Foo", "Very Foo", "Extremely Foo" ];
那么,从中获得最大值的最有效方法是什么,最大值是,按重要性顺序:“非常 Foo”>“非常 Foo”>“Foo”>“Not So Foo”
首先想到的是使用循环遍历数组并手动进行比较:
var maxValue = "";
for(var i = 0; i < stringArray.length; i++) {
if(maxValue != "Extremely Foo") {
if(maxValue != "Very Foo") {
if(maxValue != "Foo") {
maxValue = stringArray[i];
}
else if(stringArray[i] != "Not So Foo") {
maxValue = stringArray[i];
}
}
else if(stringArray[i] == "Extremely Foo") {
maxValue = stringArray[i];
break;
}
}
else { break; }
}
然后我想制作一个枚举来给每个不同的字符串一个值:
enum Foos {
Not So Foo = 0,
Foo = 1,
Very Foo = 2,
Extremely Foo = 3,
}
并使用枚举值作为比较方法来使用大于逻辑运算符。
我的问题是:实现我想要实现的目标的最佳方式是什么?我提到的两种方法中的一种,还是在 Javascript 中有更有效的不同方法?
【问题讨论】:
标签: javascript arrays string ecmascript-6 comparison