Javascript函数,该函数接受一个数组并返回一个包含每个元素数据类型的新数组

Javascript函数,该函数接受一个数组并返回一个包含每个元素数据类型的新数组,javascript,arrays,typeof,Javascript,Arrays,Typeof,所以方向很简单,但我发现自己被卡住了 我必须创建一个函数声明,该声明接受一个数组并返回一个包含每个元素数据类型的新数组。这就是我正在尝试的: let arr = ["1",2,false,true]; let newArr = []; function dataTypes (arr){ for(i= 0; i < arr.length; i+=1 ){ let y = typeOf(i) newArr.push(y); } return newArr;

所以方向很简单,但我发现自己被卡住了

我必须创建一个函数声明,该声明接受一个数组并返回一个包含每个元素数据类型的新数组。这就是我正在尝试的:

let arr = ["1",2,false,true];
let newArr = [];
function dataTypes (arr){



  for(i= 0; i < arr.length; i+=1 ){

    let y = typeOf(i)

    newArr.push(y);

  }
return newArr;
}

dataTypes (arr);
让arr=[“1”,2,false,true];
设newArr=[];
函数数据类型(arr){
对于(i=0;i
你的意思是:

let arr = ["1",2,false,true];

let res = arr.map(i => typeof(i));
纯JavaScript的长格式版本:

var res = arr.map(function(i) { return typeof(i) });
尽管您使用的是
let
ES6版本应该更好

看起来您最初的错误是使用了
typeOf
而不是
typeOf
,您应该在那里得到一个错误。记住JavaScript是区分大小写的。

有一个很好的答案

但是,如果您想运行您的代码版本,请点击这里

let arr = ["1", 2, false, true];
let newArr = [];
function dataTypes(arr) {
  for (i = 0; i < arr.length; i += 1) {
    let y = typeof (arr[i])
    newArr = [...newArr, y]
  }
  return newArr;
}
dataTypes(arr);
console.log(newArr);
让arr=[“1”,2,false,true];
设newArr=[];
函数数据类型(arr){
对于(i=0;i
doi!非常感谢。所以固定类型的…,现在我得到,['number','number','number]是一个运算符,而不是一个函数。我只是想澄清一下,因为这个答案中的用法并没有传达这一点。例如,您可以编写
arr.map(i=>typeof i)
。@PatrickRoberts它不是一个函数,或者您可以只编写
arr.map(typeof)
,但事实并非如您所指出的那样。“更好”也值得一些解释。除了更少的代码,为什么箭头函数比函数表达式更受欢迎?@RobG可读性在这里是一个巨大的问题,目的很清楚。ES6引入了这些方便的特性,所以通常使用它们是一个好主意,除非您有特定的限制来阻止它。“少即是多”的原则在这里起作用。最简单的解决方案通常是最好的解决方案,前提是它仍然可以被充分理解。只使用代码的答案并不是特别有用。OP的代码有一个简单的打字错误,修复任何其他内容实际上只是您对编写代码的更好方法的看法,这是主观的。没有
typeOf
,您需要
typeOf
,它是一个操作符,因此
typeOf i
是首选。