相关疑难解决方法(0)

为什么Array.filter(Number)在JavaScript中过滤掉了?

我正在尝试从数组中过滤掉所有非数字元素.使用typeof时,我们可以看到所需的输出.但是使用Number,它会过滤掉零.

以下是示例(在Chrome控制台中测试):

[-1, 0, 1, 2, 3, 4, Number(0), '', 'test'].filter(Number)
// Which output with zero filtered out:
[-1, 1, 2, 3, 4]  // 0 is filtered
Run Code Online (Sandbox Code Playgroud)

如果我们使用typeof,它不会过滤零,这是预期的.

// code
[-1, 0, 1, 2, 3, 4, Number(0), '', 'test'].filter(n => typeof n === 'number')
// output
[-1, 0, 1, 2, 3, 4, 0]
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 'Number'和'typeof'方法有什么区别?

  2. 数字过滤零,但'数字'本身确实包含零,这让我感到困惑.

javascript numbers typeof

42
推荐指数
3
解决办法
2494
查看次数

具有多个值的Javascript indexOf方法

我有一个array包含多个相同值的数据

["test234", "test9495", "test234", "test93992", "test234"]
Run Code Online (Sandbox Code Playgroud)

在这里,我想得到test234数组中每个的索引

为此,我尝试了Array.prototype.indexOf()方法.但它只会让我0回归,但我希望它能归还给我[0, 2, 4].

我怎样才能做到这一点?

var array = ["test234", "test9495", "test234", "test93992", "test234"];
document.write(array.indexOf("test234"));
Run Code Online (Sandbox Code Playgroud)

javascript arrays indexof

5
推荐指数
3
解决办法
2万
查看次数

如何通过纯 JavaScript 中的值获取数组的多个索引(值精确匹配)

我试图让 indexOf 返回值等于“1”(完全匹配)的数组项的多个索引。

这是我在做什么:

var arr = [1, 11, 1, 111, 1111, 11, 1, 1111, 11];
for (i = 0; i < arr.length; i++){
  console.log(arr.findIndex(1, i));
}
Run Code Online (Sandbox Code Playgroud)

我期望的结果是:0 2 6

但实际上我在提到索引后得到“-1”值。我假设它与数组的值有关(每个值都包含“1”但不等于“1”)。当我对不同值的数组做同样的事情时,它会按需要工作。

它真的与价值观有关吗?如果是,如何解决这个问题?如果有更合适的方法可以通过一个值(完全匹配)找到多个数组的索引,我们将不胜感激。

javascript arrays indexof

1
推荐指数
1
解决办法
4253
查看次数

获取一个非常大的字符串中所有出现的子字符串

像indexOf之类的东西,除了我需要找到所有索引。如果有 .indexOf 和 ,lastIndexOf ,是否应该有一个函数来获取所有索引出现的情况?我找不到。

请注意,该字符串非常大,大小约为 1MB,因此我需要最快的解决方案。

为了澄清这一点,我需要获取子字符串在字符串中出现的所有位置。

例如

var str = "foo bar foo bar"; //the real string is 1MB
var indexes = str.indexOfAll('foo'); //the function I need
console.log(indexes); //should print [0,8];
Run Code Online (Sandbox Code Playgroud)

我想到的一件事是在重复循环中使用indexOf,查找第一个单词,在索引处剪切字符串,然后再次使用indexOf,依此类推,直到找不到任何内容。我不确定性能(剪切和重新创建大字符串)。

javascript

1
推荐指数
1
解决办法
7070
查看次数

Javascript-在布尔数组中获取真值的索引

假设我有一个包含以下值的数组-

var arr = [true, true, false, false, false, true, false];
Run Code Online (Sandbox Code Playgroud)

我正在寻找可以提供以下输出的逻辑-

[0,1,5]
Run Code Online (Sandbox Code Playgroud)

javascript arrays

-2
推荐指数
1
解决办法
1865
查看次数

标签 统计

javascript ×5

arrays ×3

indexof ×2

numbers ×1

typeof ×1