首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >关联数组对象上的JavaScript foreach循环

关联数组对象上的JavaScript foreach循环
EN

Stack Overflow用户
提问于 2013-09-15 01:42:16
回答 7查看 384.3K关注 0票数 200

为什么我的for-each循环没有遍历我的JavaScript关联数组对象?

代码语言:javascript
复制
// Defining an array
var array = [];

// Assigning values to corresponding keys
array["Main"] = "Main page";
array["Guide"] = "Guide page";
array["Articles"] = "Articles page";
array["Forum"] = "Forum board";

// Expected: loop over every item,
// yet it logs only "last" assigned value - "Forum"
for (var i = 0; i < array.length; i++) {
    console.log(array[i]);
}

jQuery each()可能会有所帮助:https://api.jquery.com/jQuery.each/

EN

回答 7

Stack Overflow用户

发布于 2019-02-11 16:48:22

如果Node.js或浏览器支持Object.entries(),则可以将其用作使用Object.keys() (Pointy's answer)的替代方案。

代码语言:javascript
复制
const h = {
  a: 1,
  b: 2
};

Object.entries(h).forEach(([key, value]) => console.log(value));
// logs 1, 2

在本例中,forEach使用数组的destructuring assignment

票数 8
EN

Stack Overflow用户

发布于 2017-02-12 21:26:19

已经有一些简单的示例,但我从您的问题表达方式中注意到,您可能来自PHP背景,并且您期望JavaScript以相同的方式工作--它不是。PHP array与JavaScript Array有很大不同。

在PHP中,关联数组可以完成数字索引数组所能做的大部分工作( array_*函数有效,您可以对其执行count()操作,等等)。您只需创建一个数组并开始将其赋值给字符串索引,而不是数字。

在JavaScript中,一切都是对象(除了基本类型:字符串、数字、布尔值),而数组是一种特定的实现,可以让您拥有数字索引。推送到数组的任何内容都会影响它的length,并且可以使用数组方法(mapforEachreducefilterfind等)进行迭代。但是,因为所有东西都是对象,所以您总是可以自由地简单地分配属性,因为这是您对任何对象所做的事情。方括号表示法只是访问属性的另一种方式,因此在您的示例中:

代码语言:javascript
复制
array['Main'] = 'Main Page';

实际上相当于:

代码语言:javascript
复制
array.Main = 'Main Page';

从你的描述来看,我猜你想要一个“关联数组”,但对于JavaScript来说,这是一个简单的使用对象作为哈希表的例子。另外,我知道这只是一个例子,但要避免没有意义的名称,这些名称只描述变量类型(例如array),并根据它应该包含的内容来命名(例如pages)。简单的对象没有很多好的直接迭代方法,所以我们通常会首先使用Object方法(在本例中是Object.keys --现在一些浏览器中也添加了entriesvalues )将其转换为可以循环的数组。

代码语言:javascript
复制
// Assigning values to corresponding keys
const pages = {
  Main: 'Main page',
  Guide: 'Guide page',
  Articles: 'Articles page',
  Forum: 'Forum board',
};

Object.keys(pages).forEach((page) => console.log(page));
票数 6
EN

Stack Overflow用户

发布于 2016-08-05 19:45:38

arr_jq_TabContents[key]将该数组视为0索引形式。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18804592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档