用JavaScript计算数组中的数据类型

时间:2018-08-28 18:15:31

标签: javascript types

我正在尝试计算此数组var arr中有多少种不同的数据类型。我尝试返回的输出应为2。

var arr = [12, 45, 66, 88, true, false]
var count = [];

function check_types(arr) {
  for (i = 0; i <= typeof arr.length; i++) {}
  return count;
}
check_types(arr)

我很感谢您的反馈,这些反馈可以帮助我注意到我做错了什么,从而避免在以后的代码中重复出现错误。谢谢。

4 个答案:

答案 0 :(得分:1)

  

我要返回的输出应为2。

那为什么要为count而不是0分配一个数组?

另外,您执行typeof arr.length,即"number",将其与索引进行比较几乎没有意义。


现在要获取唯一类型的数量,您可以将数组映射到类型数组,然后将其变成唯一的Set并获得其大小:

 return new Set(arr.map(el => typeof el)).size;

答案 1 :(得分:1)

您可以将对象用作哈希表,仅用于设置标志。计算使用类型的键。

var array = [12, 45, 66, 88, true, false],
    types = {};

array.forEach(v => types[typeof v] = true);

console.log(types);
console.log(Object.keys(types).length);

答案 2 :(得分:0)

有几个错误, 1.您需要检查数组中元素的数据类型。 array.length的类型始终是数字 2.对于array,需要循环直到arr.length(i

var arr = [12, 45, 66, 88, true, false]
var count = [];

function check_types(arr) {
  for (i = 0; i <arr.length; i++) {
   let dtype = typeof arr[i]
     if(!count.includes(dtype)) {
     count.push(dtype)
   }
  }
  return count.length;
}
console.log(check_types(arr))
console.log(count)

答案 3 :(得分:0)

这可以解决问题

function check_types(arr) {
  var types = {};
  arr.forEach(function(i){
    if (types[typeof i] === undefined)
      types[typeof i] = 1;
    else
      types[typeof i]++;
  });
  return Object.keys(types).length;
}

var arr = [12, 45, 66, 88, true, false];

console.log(check_types(arr));

创建一个对象,其中每个键代表数组中的类型,每个键的值是数组中该类型的编号。 您现在不需要这些数字,因此您只需计算该对象中的键数即可。