【问题标题】:jQuery Create Object Literal LoopjQuery 创建对象文字循环
【发布时间】:2012-01-27 02:13:36
【问题描述】:

我需要遍历一系列 DOM 元素并使用 jQuery 创建一个对象字面量,如下所示。我猜这涉及到 .each 的使用,但我有点不知道下一步该做什么。

    '1': {
        'text': 'Maintain Compliance',
        'desc': 'blah',
        'size': 10,
        'color': '#afb0b3'
    },
    '2': {
        'text': 'lorem ipsum',
        'desc': 'blah.',
        'size': 4,
        'color': '#9b9ca0'
    },
    '3': {
        'text': 'lorem ipsum',
        'desc': 'blah',
        'size': 6,
        'color': '#c5c6c7'
    }

【问题讨论】:

    标签: jquery object each object-literal


    【解决方案1】:

    您将使用.map() 创建一个对象数组。

    var objects = $('.my_elements').map(function(i,el) {
        var $el = $(el);
        return {
            text:$el.text(),
            desc:'blah',
            size:'some_size_property_of_the_element?',
            color:$el.css('color')
        };
    }).get();
    

    每次迭代返回的对象被添加到集合中。

    这个版本的.map()实际上是返回一个jQuery对象,所以需要.get()转换成一个数组。


    您可以使用另一个$.map 直接创建一个数组。

    var objects = $.map($('.my_elements'), function(el,i) {
        var $el = $(el);
        return {
            text:$el.text(),
            desc:'blah',
            size:'some_size_property_of_the_element?',
            color:$el.css('color')
        };
    });
    

    请注意,参数与第一个版本相反。很容易被抓住。


    顺便说一句,您并没有真正创建“对象文字”。你只是在创建一个对象。 “对象字面量”是一种用于创建对象的符号。


    另外,我根据您的数字索引假设您想要一个对象数组。如果主结构不应该是一个数组,那么它就需要有点不同,像这样......

    var objects = {};
    
    $('.my_elements').each(function(i,el) {
        var $el = $(el);
        objects[ i+1 ] = {
            text:$el.text(),
            desc:'blah',
            size:'some_size_property_of_the_element?',
            color:$el.css('color')
        };
    });
    

    这会在1 上开始编号,如问题所示。虽然我仍然倾向于使用数组。

    【讨论】:

    • 除了 1 件事外,它工作得很好。它将我的对象命名为“对象”而不是数字。我需要“对象”具有数字递增的名称,例如 1、2、3、4、5 等。
    • 这是一个很好的视觉示例,说明我拥有什么和需要什么screencast.com/t/fbXme1UTjnL
    • 忽略图片底部的原始垃圾。
    • ...看屏幕截图,是的,第一个是带有数字索引的数组。 Object 只是表明每个索引处的项目确实是一个对象。这不是属性名称。我的最后一个解决方案应该为您提供从 1 开始的索引。
    • 你刚刚拯救了圣诞节(以一种后现代的方式)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2012-11-29
    • 2015-02-23
    • 2016-11-11
    • 1970-01-01
    • 2010-11-20
    • 2020-08-08
    相关资源
    最近更新 更多