有没有一种好方法可以检查数组中的所有项目是否属于同一类型?
这样做:
[1, 2, 3, 4] // true
[2, 3, 4, "foo"] // false
答案 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>