【问题标题】:jQuery trouble finding / setting objects in multi dimensional arrayjQuery 在多维数组中查找/设置对象时遇到问题
【发布时间】:2017-05-02 13:54:05
【问题描述】:

我正在尝试使用 jquery 循环选择并从值创建一个二维数组:

下面的代码我想要的输出看起来像这样:

object {Monday => hours[0] = '1a-2a',hours[1] = '2a-3a', Tuesday => hours[0] = '4p-5p', hours[1] = '5p-6p'}

假设我的 .each 选择器看起来像这样:

<ol id='selectable'>
   <li data-day='Monday' data-time='1a-2a' class='ui-selected'></li>
   <li data-day='Monday' data-time='2a-3a' class='ui-selected'></li>
   <li data-day='Tuesday' data-time='4p-5p' class='ui-selected'></li>
   <li data-day='Tuesday' data-time='5p-6p' class='ui-selected'></li>
</ol>

我正在尝试使用下面的代码来获得我想要的输出,但我一直收到错误消息:

"TypeError: 不能使用 'in' 运算符在 undefined(...) 中搜索 'hours'"

var days = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var selection = [];
var i;
    for (i = 0; i < days.length; ++i) {
        $( ".ui-selected", "#selectable" ).each(function() {
            if($(this).attr( 'data-day' ) == days[i]){
                if(!(days[i] in selection)){
                    selection.push(days[i]);
                    if(!("hours" in selection[days[i]])){
                        selection[days[i]] = {hours:[]};
                    }
                }
                selection[days[i]]['hours'].push($(this).attr( 'data-time' ));
            }
        });
        console.log(selection);
    }

知道我在这里做错了什么吗?

【问题讨论】:

    标签: javascript jquery arrays multidimensional-array associative-array


    【解决方案1】:

    你需要 selection 是一个对象,而不是一个数组,就像这样:

    var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    var selection = {};
    var i;
    for (i = 0; i < days.length; ++i) {
        $( ".ui-selected", "#selectable" ).each(function() {
            if($(this).data( 'day' ) == days[i]){
                if(!(days[i] in selection)){
                    selection[days[i]] = {};
                    if(!("hours" in selection[days[i]])){
                        selection[days[i]] = {hours:[]};
                    }
                }
                selection[days[i]]['hours'].push($(this).data( 'time' ));
            }
        });
        console.log(selection);
    }
    

    在这里工作:https://jsfiddle.net/wehdnm20/1/

    【讨论】:

    • 你打赌。很高兴我能帮忙:)
    猜你喜欢
    • 1970-01-01
    • 2015-04-25
    • 2012-09-06
    • 2013-06-11
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 2016-11-07
    相关资源
    最近更新 更多