Javascript相当于;对于y中的x“;

Javascript相当于;对于y中的x“;,javascript,python,arraylist,Javascript,Python,Arraylist,我一直在努力寻找与Python的“for x in y”相当的Javascript。例如,我想将偶数推送到一个空数组,但我不知道如何编写代码来实现这一点。我一直在这样做: var numbers = [ 1, 2, 3, 4, 5] var even = [] for(var x = 0; x < numbers.length; x++){ if(x % 2 == 0){ even.push(x) } } var编号=[1,2,3,4,5] var偶

我一直在努力寻找与Python的“for x in y”相当的Javascript。例如,我想将偶数推送到一个空数组,但我不知道如何编写代码来实现这一点。我一直在这样做:

var numbers = [ 1, 2, 3, 4, 5]
var even = []
for(var x = 0; x < numbers.length; x++){
     if(x % 2 == 0){
         even.push(x)
     }
}
var编号=[1,2,3,4,5]
var偶数=[]
对于(变量x=0;x
如果数字是字符串,字符串也是一样的:

var numbers = [ "one", "two", "three"]
var even = []
for(var x = 0; x < numbers.length; x++){
     if(x == "two"){
         even.push(x)
     }
}
var number=[“一”、“二”、“三”]
var偶数=[]
对于(变量x=0;x
我注意到,每当我输入它时,它只显示x作为数组的索引,但我想访问元素。

for(让x代表数字)
JS就是你要找的

x
将迭代值而不是索引

const numbers = [ 1, 2, 3, 4, 5]
const even = []
for(const x of numbers){
     if(x % 2 === 0){
         even.push(x)
     }
}
p.S.

偶数=数字。过滤器(el=>el%2==0)
也可以使用,而且更简单


您可以找到文档。

当您将x推送到列表时,它将推送第一个列表的2,4,…,长度。你需要使用

var numbers = [ 1, 2, 3, 4, 5]
var even = []
for(var x = 0; x < numbers.length; x++){
    if(x % 2 == 0){
        even.push(numbers[x])
    }
}
var编号=[1,2,3,4,5]
var偶数=[]
对于(变量x=0;x
如果您使用并且可以实现与Python语法非常相似的功能

function*过滤器(谓词,iterable){
对于(让项目的iterable)
if(谓语(项))
收益项目;
}
常数isEven=x=>x%2==0;
变量数=[1,2,3,4,5]
var偶数=[]
对于(滤波器的x(isEven,数字)){
偶。推(x)
}

console.log(偶数)
number[x]
获取属于索引
x
的项,用于。。。of
是Python的
for.的直接惯用JS等价物。。在
中。然而,对于这个简单的用例,我更喜欢在数组上简单地使用
filter
方法,没有任何循环。for(让x of[1,2,3]){console.log(x)}
@RandyCasburn
for/in
的错误在于它只应该在对象上使用,而不是在数组上使用,因为它迭代所有自己的属性,不仅仅是索引的。这是一个“准备好,开火,瞄准”的例子:-)