我正在尝试从数组中过滤掉所有非数字元素.使用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)
我的问题:
'Number'和'typeof'方法有什么区别?
数字过滤零,但'数字'本身确实包含零,这让我感到困惑.
我有一个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)
我试图让 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”)。当我对不同值的数组做同样的事情时,它会按需要工作。
它真的与价值观有关吗?如果是,如何解决这个问题?如果有更合适的方法可以通过一个值(完全匹配)找到多个数组的索引,我们将不胜感激。
像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,依此类推,直到找不到任何内容。我不确定性能(剪切和重新创建大字符串)。
假设我有一个包含以下值的数组-
var arr = [true, true, false, false, false, true, false];
Run Code Online (Sandbox Code Playgroud)
我正在寻找可以提供以下输出的逻辑-
[0,1,5]
Run Code Online (Sandbox Code Playgroud)