javascript—在循环中查找数组中数据类型的组合

javascript—在循环中查找数组中数据类型的组合,javascript,arrays,Javascript,Arrays,有没有一种方法可以在不使用下面这样的循环的情况下找到数组的数据类型组合 var anArray = [ 52, "A string", new Date(), "spatula" ], typeVar, compOfArray = {}; for (var i in anArray) { typeVar = typeof anArray[i]; if (!compOfArray[typeVa

有没有一种方法可以在不使用下面这样的循环的情况下找到数组的数据类型组合

var anArray = [
        52,
        "A string",
        new Date(),
        "spatula"
    ],
    typeVar,
    compOfArray = {};

for (var i in anArray) {
    typeVar = typeof anArray[i];
    if (!compOfArray[typeVar])   compOfArray[typeVar] = true;
    else                         compOfArray[typeVar] += 1;
}

不,您可以使用控制台中的
array.prototype
或check

来检查任何数组方法。您可以使用
reduce
-函数来创建一个对象,该对象跟踪数组中每种类型的数量:

var compOfArray = anArray.reduce(function(a,b){
  typeof b in a ? a[typeof b]++ : a[typeof b] = 1;
  return a
},{});

不,没有循环就没有办法做到这一点。顺便说一句,循环中..的
是对数组进行迭代。
compOfArray=anArray.reduce((obj,val)=>(obj[t=typeof val]=(obj[t]|0)+1,obj),{})