检查数组中的所有元素是不是都是字符串[重复]

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:someevery 都是“短路的”,这意味着只要不满足 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 [重复]

Java - 如何检查字符串是不是包含字符串数组的元素?

检查数组是不是包含字符串但忽略该字符串中的其他字母[重复]

mongodb:查询以检查数组中的项目是不是包含特定字符串[重复]

如何检查字符串是不是包含数组中的任何元素[关闭]