【问题标题】:How do I access data in an array in JavaScript如何在 JavaScript 中访问数组中的数据
【发布时间】:2011-11-05 18:28:21
【问题描述】:
  var lotsData = [
    {
        index: 0,
        data: 'I want to be in HTML',

    },
    {
        index: 1,
        data: 'I dont' want to be in HTML',
    }]

假设我更喜欢一个带有数组的 var。如何访问索引 0,说它连接到点击事件并且我想使用数据:

    $('.tab').live('click', function() {
          console.log("I was clicked");
                      $('#fancy').text(WHAT GOES HERE TO ACCESS data from index 0?);
        });

【问题讨论】:

    标签: javascript jquery arrays var


    【解决方案1】:

    jQuery 是用 Javascript 编写的,Javascript 本身提供了 Array 对象。

    所以访问数组的第 0 个元素是array_name[0]

    在您的示例中,您将对象存储为数组的元素。您的对象包含一个“索引”属性,但请注意,您的“索引”属性与数组中的元素索引无关。您不应该包含“索引”属性...例如:

     var lotsData = [
    { // this is the first array element, index value in the array is 0
        index: 1,
        data: 'I want to be in HTML',
    
    },
    {  // this is the second array element, index value in the array is 1
        index: 0,
        data: "I don't want to be in HTML",
    }]
    
    lotsData[0].data // value: 'I want to be in HTML' 
    

    更好的例子是:

     var lotsData = [
    {  // this is the first array element, index value in the array is 0
        category: 'shoe',
        detail: 'red'
    
    },
    {  // this is the second array element, index value in the array is 1
        category: 'fruit',
        detail: 'apple'
    }]
    
    lotsData[0].detail // value: 'red'
    

    添加:尾随逗号

    请注意,虽然 Javascript 是一种功能强大的语言,但它也有其怪癖。 一个重要的是尾随逗号,例如

    ...
        index: 0,
        data: "I don't want to be in HTML",  // Trailing comma. DON'T DO THIS!
    }]
    

    问题在于尾随逗号不是 Javascript 语言的正式部分。大多数 JS 引擎都支持它,但一个非常重要的引擎不支持:Internet Explorer 浏览器确实支持尾随逗号,遇到逗号就会悲痛地死去。

    由于 IE 的独特处理方式,您的测试应始终包括 IE。

    我在 IE 7 中测试。

    【讨论】:

    • 感谢您的澄清。我是一个 Rubyist 索引函数以同样的方式
    • @JZ 感谢您的检查!我也是一名 Ruby 专家,并且随着我学习越来越多的 Javascript 感到高兴——它是一种功能强大、功能齐全的语言。当然,它不是红宝石,但它的力量远比它(旧的)名声让我相信的要强大。
    【解决方案2】:
     $('.tab').live('click', function() {
              console.log("I was clicked");
                          $('#fancy').text(lotsData[0].data);
            });
    

    当然,这是假设您的索引顺序正确(因为它们似乎来自您的示例数据)。

    在这种情况下,没有理由保留数组对象的index 属性。使用简单的字符串数组会更容易使用。

    例子

    var lotsData = ["I want to be in HTML","I don't want to be in HTML"];
    

    这样你只需要简单地引用lotsData[0]

    【讨论】:

      【解决方案3】:

      首先不要使用 .live() 除非你真的需要 (http://jupiterjs.com/news/why-you-should-never-use-jquery-live)

      但是,如果您查看 .live() 文档 (http://api.jquery.com/live/),您会看到您可以将数据传递给 .live(),这将在回调中可用。

      .live(eventType, eventData, handler)

      所以:

      $('.tab').live('click',lotsData,function(event){
          console.log('I was clicked');
          $('#fancy').text(event.data[0].data);
      });
      

      这就是你要问的吗?

      或者您是否正在寻找一种方法来遍历lotsdata 并找出数组中的哪个项目具有.index = 0?

      【讨论】:

        【解决方案4】:

        你可以试试这个,不是最好的解决方案:

        $('.tab').live('click', function() {
            console.log("I was clicked");
            var realIndex;
            for (var i = 0; i < lotsData.length; i++ )
            {
                if (lotsData[i].index == 0) {
                    realIndex = i;
                    break;
                }
            }
            $('#fancy').text(lotsData[realIndex].index);
        });
        

        【讨论】:

          猜你喜欢
          • 2020-12-26
          • 1970-01-01
          • 1970-01-01
          • 2018-02-10
          • 2018-12-23
          • 2014-04-15
          • 1970-01-01
          • 2018-03-03
          • 1970-01-01
          相关资源
          最近更新 更多