首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jQuery循环数组?

如何使用jQuery循环数组?
EN

Stack Overflow用户
提问于 2016-03-07 23:22:12
回答 2查看 219关注 0票数 3

我有一个数组。我希望能够循环每个数组,对于每个数组,我希望添加新的键或更新现有的值。

这是我有的东西

代码语言:javascript
复制
    var values = [];

    values['123'] = [];
    values['456'] = [];
    values['123']['x1'] = 'value 1';
    values['123']['x2'] = 'value 2';

我希望遍历值数组,并为每个数组向数组添加新的键。(即values['123']values['456'])

这是我试过的

代码语言:javascript
复制
$.each(values, function(index, value){

  value['x1'] = 'new value 1';
  value['x10'] = 'new value 10';
  value['x20'] = 'new value 20';
  console.log(value);

});

控制台显示此错误。

代码语言:javascript
复制
TypeError: value is undefined

这是一个小提琴

如何正确循环每个数组项并更新原始数组?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-07 23:26:31

实际上,对于您的情况,需要使用Object,而不是Array

要构造非数字索引,应使用{}

{} -用于构造Object[] -用于构造Array

jQuery.each()可以用于对对象数组进行迭代。

试试这段代码

代码语言:javascript
复制
$(function() {
    $('#x').click(function(e) {
        var values = {}; // here

        values['123'] = {}; // here
        values['456'] = {}; // here
        values['123']['x1'] = 'value1';
        values['123']['x2'] = 'value2';


        $.each(values, function(index, value) {

            value['x1'] = 'new value 1';
            value['x10'] = 'new value 10';
            value['x20'] = 'new value 20';
            console.log(value);

        });
    });
});
票数 1
EN

Stack Overflow用户

发布于 2016-03-07 23:35:42

之所以发生这种情况,是因为您的values数组正在使用索引123456进行初始化。因此,$.each()函数假定数组长度为457,因此从元素索引0开始,尽管该索引中没有值。

为了克服这个问题,你只需做以下的改变就行了-

代码语言:javascript
复制
$.each(values, function(index, value){
    if(values[index] !== undefined) { 
        value['x1'] = 'new value 1';
        value['x10'] = 'new value 10';
        value['x20'] = 'new value 20';

        //Update the new values in the values object.
        values[index] = value;
        console.log(value);
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35856123

复制
相关文章

相似问题

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