如何遍历一个JavaScript数组

原文 标签 IT工具网 javascript

原问题:Loop through array in JavaScript

在Java中,可以使用改进的for()循环来遍历一个数组:

String[] myStringArray = {"Hello","World"};
for(String s : myStringArray)
{
    //Do something
}

在JavaScript中对数组的遍历也能这样简洁方便么?

for Statement

JavaScript中的for语句有两种形式:

    // for
    for (initialization; condition; update) {
        statements
    }

    // for...in
    for (variable in object) {
        if (filter) {
            statements
        }
    }

第一种for语句跟Java中一样,它是遍历 _(Iteration)_。第二种为枚举 _(Enumeration)_,我们称其为for...in语句,它有点特别。

关于Iteration和Enumeration的区别,请参考:Enumeration VS Iteration

从形式上可以看出,for...in是用来*遍历一个对象的所有属性(Properties)*的。

Object and Properties

  • JavaScript中,除了基本值类型变量之外,其他变量都代表一个对象。
  • 一个JavaScript的对象就是一个JSON实例,是一组属性的集合。
  • 一个JavaScript对象的属性也是变量

因此这是一个递归定义。

Object Properties

对于一个对象的属性*(Object Properties)*,我们从其性质和来源两方面来分析。

性质: * 属性(Property)本身是一个对象,有一个名字 * 属性(Property)包含若干个attributes,包括value, enumerable, configurable, writable。这些attributes定义了存取这个属性的权限

来源

由于Prototype Chain机制,一个JavaScript对象会自动地*拥有*其Prototype Chain上游对象的属性。

  • 继承属性 (inherited property)
  • 自定义属性 (own defined property)

这两类属性的性质是不同的,具有不同的存取权限。

为了区分一个对象的属性的来源,JavaScript为Object对象提供了hasOwnProperty(key)方法。

因此,如果你使用for...in且只想遍历你的自定义对象的自定义属性,那么需要使用hasOwnProperty(key)方法。

    for (variable in object) {
        if (object.hasOwnProperty(variable)) {
            statements
        }
    }

相关文章:

iptables命令之禁ping和ddos向外发包

如何修改浏览器地址栏的URL

javascript - 如何使用书架js(和knex查询生成器)在不使用Invoke Then的情况下将多行插入mysql?

php - 为什么我们应该使用PHP?

iOS中的崩溃类型

java初始化静态map

如何对Java class文件进行反编译

javascript - 如何将小数点后的位数限制为2?

javascript - 尝试从多个页面的下拉菜单中保留用户选择

javascript - 正确使用帖子请求结果来更新网页的方法