Javascript 如果数组值是否为数字,则无法进行比较
我正在尝试创建Windows应用商店应用程序,但无法比较数组元素。问题是我不想比较字符串,但它正在这样做。以下是比较代码:-Javascript 如果数组值是否为数字,则无法进行比较,javascript,windows-store-apps,Javascript,Windows Store Apps,我正在尝试创建Windows应用商店应用程序,但无法比较数组元素。问题是我不想比较字符串,但它正在这样做。以下是比较代码:- function sort() { var ar = NumList.value; var flag=0; var arr = ar.split(","); for (var i = 0; i < arr.length; i++) { if (typeof (+arr[i]) === 'number') flag = 0; else
function sort()
{
var ar = NumList.value;
var flag=0;
var arr = ar.split(",");
for (var i = 0; i < arr.length; i++)
{
if (typeof (+arr[i]) === 'number')
flag = 0;
else
flag++;
}
if (flag == 0) {
InsertionSort();
QuickSort();
MergeSort();
SelectionSort();
BubbleSort();
}
else
{
error.showAsync();
}
}
函数排序()
{
var ar=NumList.value;
var标志=0;
var arr=ar.split(“,”);
对于(变量i=0;i
即使数组中有一个string元素,它也会继续对元素进行排序。有人能帮我吗?一元
+
运算符总是将arr[i]
转换为数字,即使值是字符串,因为字符串转换为NaN
,并且typeof NaN==“number”
。因此,标志
将始终为0
您可以改为选中NaN
:
if (!isNaN(+arr[i])) {...}
一元
+
运算符始终将arr[i]
转换为数字,即使该值是字符串(typeof NaN==“number”
)。因此,flag
将始终是0
@Teemu:-不幸的是,如果我输入字符串元素,这些元素也会以随机顺序排序。正如预期的那样。也许我之前的评论有点措词不当<代码>+(“字符串”)===NaN和类型的NaN===“number”
。我仍然无法理解。你能给我一个答复吗?