【问题标题】:Javascript function that takes an array and returns a new array with each elements data typesJavascript 函数,它接受一个数组并返回一个包含每个元素数据类型的新数组
【发布时间】:2018-10-02 22:03:18
【问题描述】:

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

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

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);

【问题讨论】:

  • 没有typeOf,你需要typeof,它是一个运算符,所以首选typeof i。

标签: javascript arrays typeof


【解决方案1】:

你的意思是:

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 是区分大小写的。

【讨论】:

  • doi!谢谢你!所以固定类型...现在我得到 ['number','number','number]
  • typeof 是运算符,而不是函数。只是想我会澄清一下,因为这个答案中的用法没有传达这一点。例如,您可以写arr.map(i =&gt; typeof i)。
  • @PatrickRoberts 有点烦人,它不是一个函数,或者你可以只是 arr.map(typeof) 但你指出的情况并非如此。
  • “更好”也值得解释。除了更少的代码,为什么箭头函数比函数表达式更受欢迎?
  • @RobG 可读性在这里是一个巨大的问题,意图很明确。 ES6 引入了这些方便的特性,所以除非你有特定的限制阻止它,否则使用它们通常是一个好主意。 “少即是多”的原则在这里起作用。最简单的解决方案,只要它仍然可以充分理解,通常是最好的解决方案。
【解决方案2】:

tadman 有一个很好的答案。

但是,如果您希望您的代码版本运行,就在这里。

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);

【讨论】:

  • 纯代码答案并不是特别有用。 OP 的代码有一个简单的拼写错误,修复任何其他内容实际上只是您对编写代码的更好方法的看法,这是主观的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 2019-01-19
相关资源
最近更新 更多