检查数组的所有值是否属于同一类型

时间:2018-03-21 16:34:18

标签: javascript arrays

有没有一种好方法可以检查数组中的所有项目是否属于同一类型?

这样做:

[1, 2, 3, 4]  // true
[2, 3, 4, "foo"] // false

5 个答案:

答案 0 :(得分:4)

您可以根据数组中每个元素的类型创建一个Set,并确保它最多包含一个元素:

console.log( allSameType( [1,2,3,4] ) );
console.log( allSameType( [2,3,4,"foo"] ) );

function allSameType( arr ) {
  return new Set( arr.map( x => typeof x ) ).size <= 1;
}

答案 1 :(得分:0)

您可以使用Array.every来检查所有元素是否都是字符串。

arr.every( (val, i, arr) => typeof val === typeof arr[0]);

arr = ["foo", "bar", "baz"] // true  
arr = [1, "foo", true] // false

注意:

arr = [] // true 

答案 2 :(得分:0)

可能不那么复杂的解决方案

std::Hi

答案 3 :(得分:0)

使用递归的函数方法。

var array = [1, 2, "foo"]

function check([head, ...tail])
{
    if(!head)
    {
        return true
    }
    else
    {
        var flag = true
        tail.forEach(element => {
            flag &= typeof element === typeof head
        })
        return flag? check(tail) : false 
    }
}

console.log(check(array))

答案 4 :(得分:0)

并非OP询问的是什么,而是如果您要检查它是否为特定类型:

<div class="container">

  <div class="sidebar">
    <div class="header">
      <h1>Logo</h1>
    </div>
    <p>Sidebar Text</p>
  </div>

  <section>
    <div class="header">
      <button>Input</button>
    </div>
    <p>
      <textarea>Input Text</textarea>
    </p>
  </section>

  <section>
    <div class="header">
      <button>Output</button>
    </div>
    <p>
      <textarea>Output Text</textarea>
    </p>
  </section>

</div>