【问题标题】:Choose which array to loop over选择要循环的数组
【发布时间】:2012-09-14 03:49:34
【问题描述】:

我正在创建一个 javascript 函数来构建当前月份的日历(在 <table> 中)的 html。该函数的参数之一是是写出星期几还是使用它们的首字母。全名和首字母都包含在数组中。该函数将遍历其中一个数组以构建包含星期几的表格单元格。选择要循环的数组的最佳方法是什么?或者我应该以完全不同的方式构建这段代码?

说明我的问题的代码:

buildCalendar(useFullNames){
    var fullNames = ['Sunday', 'Monday'], // etc.
        initials = ['S', 'M'],
        calString = '<tr>';

    if(useFullNames) {
        // use fullNames array in the loop 
    }     
    else {   
        // use initials array in loop
    }

    for(i=0; i<7; i++)
    {
        // Need to loop over the array picked above
        calString += '<td>' + relevantArray[i] + '</td>';
    }

    calString += '</tr>';
}

【问题讨论】:

  • 你可以将你想要的数组保存在一个变量中,但是首先创建一个二维数组怎么样?根据 useFullNames,第一个索引可以是 0 或 1。
  • 但条件语句一次比每次循环都更容易。
  • @dmr 无论您最终使用哪种解决方案,您都可能希望循环使用i&lt;relevantArray.length 而不是i&lt;7,以防您想在一周内更改范围。这样,您不必在多个地方更新代码,并且“更安全”。不太重要,特别是因为我确信它永远是 7,但仍然......

标签: javascript html arrays loops


【解决方案1】:
var relevantArray = useFullNames ? fullNames : initials;

【讨论】:

  • 这可能是她说的吗? :p
【解决方案2】:

这样的东西(伪代码)怎么样:

buildCalendar(dayOfWeekFormat){ //dayOfWeekFormat: "fullNames or "initials"
    var dayOfWeekFormat = { 
       fullNames: ['Sunday', ..., 'Saturday'],
       initials: ['S', ..., 'Sat']
    }
    var calString = '<tr>';

    for(i=0; i<7; i++)
    {
        // Need to loop over the array picked above
        calString += '<td>' + daysOfWeek[dayOfWeekFormat][i] + '</td>';
    }

    calString += '</tr>';
}

relevantArray 是一个糟糕的变量名。它不会告诉你里面有什么。

【讨论】:

    【解决方案3】:

    好吧,就像你已经设置好了一样,设置relevantArray 变量

    buildCalendar(useFullNames){
        var fullNames = ['Sunday', 'Monday'], // etc.
            initials = ['S', 'M'],
            calString = '<tr>',
            relevantArray;
    
        if(useFullNames) {
            // use fullNames array in the loop 
            relevantArray = fullNames;
        }     
        else {   
            // use initials array in loop
            relevantArray = initials;
        }
    
        for(i=0; i<7; i++)
        {
            // Need to loop over the array picked above
            calString += '<td>' + relevantArray[i] + '</td>';
        }
    
        calString += '</tr>';
    }
    

    【讨论】:

    • 嘘!如果上面由@xdazz 定义,则使用内联!
    • 是的,因为它真的很重要。我试图使用与 OP 相同的代码/逻辑,以便他们能够更好地理解......
    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 2015-04-15
    • 1970-01-01
    • 2022-06-24
    相关资源
    最近更新 更多