Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .toUpperCase包含一个数组元素_Javascript_Arrays - Fatal编程技术网

Javascript .toUpperCase包含一个数组元素

Javascript .toUpperCase包含一个数组元素,javascript,arrays,Javascript,Arrays,为什么它不使用数组的元素,而不是所有数组的元素。 它是嵌套循环 for (var q = 0; q < array.length; q++) { arraySymb[k] = array[q].toUpperCase() ; break; } (var q=0;q

为什么它不使用数组的元素,而不是所有数组的元素。 它是嵌套循环

for (var q = 0; q < array.length; q++) { 
  arraySymb[k] = array[q].toUpperCase() ;
  break;        
}
(var q=0;q arraySymb[k]=array[q].toUpperCase(); 打破 } 控制台:
未捕获类型错误:数组[q]。toUpperCase不是函数

请确保数组元素是字符串

array[q].toString().toUpperCase()


还有,这不是结束循环吗

首先确保它是一个字符串

for (let q = 0; q < array.length; q++) { 

  if (typeof array[q] === 'string'){
     arraySymb[k] = array[q].toUpperCase() ;
     break;        
   }
  else{
    debugger; // to examine the value
 }
}
for(让q=0;q
您似乎希望将数组转换为全大写。Javascript方便地使用了
Array.prototype.map
方法

你想做的事可以用它来完成

arraySymb = array.map(str=>str.toUpperCase())
撇开这一点不谈,显然您遇到的问题是数组的元素不是字符串,因为toUpperCase是一个只有字符串才有的方法。您可以通过循环检查阵列。要识别违规元素,可以使用以下方法:

array.forEach((e, i)=>{
   if (typeof e !== 'string')
      console.log(e, "is not a string at index=", i)
})

被忽略的一个方面是,错误消息引用了一个未捕获的TypeError,这意味着如果代码要捕获它,那么某些代码可能仍然会执行,直到出现异常,如下所示:

var d=文档;
d、 g=d.getElementById;
var myData=d.g(“myData”);
var arr=[“1”、“ana”、“2”、“bill”、true、“cathy”];
var-arrStr=[];
试一试{

对于(var i=0,k=0;i,那么什么是数组[q]?很明显,它不是有toUpperCase方法的东西/似乎缺少一些代码。另外,数组中的数据类型是什么?如果有字符串数组,它会工作。删除“break”;循环只会循环一次,我非常确定:/另外,请确保数组元素是字符串(即
array[q].toString().toUpperCase()
toUpperCase
仅适用于
String
类型的数据。如果确实需要,您需要将数组项转换为字符串。
array[q].toString().toUpperCase();