检查数组中的所有元素是不是都是字符串[重复]
Posted
技术标签:
【中文标题】检查数组中的所有元素是不是都是字符串[重复]【英文标题】:Check if all elements in array are strings [duplicate]检查数组中的所有元素是否都是字符串[重复] 【发布时间】:2015-01-08 08:50:48 【问题描述】:有没有好办法检查数组中的所有索引是否都是字符串?
check(["asd", 123]); // false
check(["asd", "dsa", "qwe"]); // true
【问题讨论】:
@Compass 所有字符串,甚至是数字。 ***.com/questions/4059147/…多田 @Compass 你什么意思,这不是问题? @Murplyx 如果你有迭代和条件的概念,知道如何区分字符串和数字就足够了:) 【参考方案1】:您可以使用Array.every
来检查是否所有元素都是字符串。
function check(x)
return x.every(i => (typeof i === "string"));
【讨论】:
该死的,又短又甜。 +1 以防万一,IE>8 :) 在 lodash,_.every(x, _.isString);
这是一个带有 .some() 的解决方案,它会阻止你遍历所有元素 function allElementsAreString(arr => !arr.some(element => typeof element !== "string"))
developer.mozilla.org/en-US/docs/Web/javascript/Reference/…
@MattCatellier:some
和 every
都是“短路的”,这意味着只要不满足 every
的条件或满足条件,它们就会停止some
.【参考方案2】:
您可以这样做 - 遍历数组并测试是否所有内容都是字符串。
function check(arr)
for(var i=0; i<arr.length; i++)
if(typeof arr[i] != "string")
return false;
return true;
【讨论】:
【参考方案3】:这样的?
var data = ["asd", 123];
function isAllString(data)
var stringCount;
for (var i = 0; i <= data.length; i++)
if (typeof data[i] === 'string')
stringCount++;
return (stringCount == data.length);
if (isAllString(data))
alert('all string');
else
alert('check failed');
【讨论】:
@CambridgeMike 版本效率更高(:【参考方案4】:我的方式:
check=function(a)
for ( var i=0; i< a.length; i++ )
if (typeof a[i] != "string")
return false;
;
return true;
console.log(check(["asd","123"])); // returns true
console.log(check(["asd",123])); // returns false
【讨论】:
以上是关于检查数组中的所有元素是不是都是字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在Python中检查二维数组中的所有元素是不是等于1 [重复]