有没有一种有效的方法可以从 JavaScript 数组中获取某种类型的所有值?

wib*_*fey 4 javascript arrays sorting types

假设我有一个没有特定顺序的数组,并且我想从该数组中获取给定类型的所有值(在本例中,我们使用字符串)。

oldArray = [1, "2", {3: 4}, 5, "6", /7/];
/* ... */
newArray = ["2", "6"];
Run Code Online (Sandbox Code Playgroud)

从逻辑上讲,我会做这样的事情:

newArray = [];
oldArray.forEach((element) => {
  if (typeof element === "string") {
    newArray.push(element);
  }
});
Run Code Online (Sandbox Code Playgroud)

(虽然它不像 Python one-liner 那么优雅[value for value in oldArray if type(value) == str],但对我来说仍然足够了。)


我的问题是:是否有更有效的方法来做到这一点,或者这是一个最佳解决方案?

Maj*_*awi 10

使用Array#filtertypeof

const oldArray = [1, "2", {3: 4}, 5, "6", /7/];

const newArray = oldArray.filter(e => typeof e === 'string');

console.log(newArray);
Run Code Online (Sandbox Code Playgroud)


Bar*_*mar 7

您可以使用array.filter()

newArray = oldArray.filter(e => typeof e == "string")
Run Code Online (Sandbox Code Playgroud)

  • @wibbuffey ... *代码审查*模式...但另一个答案作为可执行片段提供,这需要更多时间来编写。并且......它使用*严格等于*进行比较。还有带有“const”的“newArray”与全局初始化。(顺便说一句......没有人应该感到受伤或侮辱。此评论只是为了强调我对接受答案的标准有多么困惑。) (4认同)