我正在尝试计算此数组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)
我很感谢您的反馈,这些反馈可以帮助我注意到我做错了什么,从而避免在以后的代码中重复出现错误。谢谢。
答案 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));
创建一个对象,其中每个键代表数组中的类型,每个键的值是数组中该类型的编号。 您现在不需要这些数字,因此您只需计算该对象中的键数即可。