Javascript从关联数组的精确字段中获取值

时间:2015-03-19 00:43:15

标签: javascript arrays

我有一个关联数组 - 按日期索引。每个元素都有另一个数组。

[03/16/2015:Array [3],03/17/2015:Array [3],03/18/2015:Array [3],03/19/2015:Array [3]]

我用这段代码创建了它:

 array[cellDate][i]=cellText;

如何从单元格03/16/2015 array [2] ??

获取值
 var text=array['03/16/2015'][2]; 

使用这行代码我遇到了错误。

编辑:

http://www.traineffective.com/schedule/

我存储在计划中删除的块的数组标题(如果单元格为空,则为“空”值块的标题)

我想要达到的目的是记住特定周的块的顺序,当用户用箭头更改周时,它会根据日期从数组中加载来加载块。

我创建数组的代码:

function saveWeekToArray(array){
    var cellDate;
    var cellText;
    var tmpText;
    var i;
    workoutsTD.each(function(){
        cellDate=$(this).attr("data-day");
        array[cellDate]=['','',''];
        i=0;
        $(this).children('.workout-cell').each(function(){ 
            if (!$(this).hasClass('workout-cell-empty')){
                cellText=$(this).find('span').text();
                array[cellDate][i]=cellText;
            } else {
                array[cellDate][i]='empty';
            }
            i++
        });

    });
}

我从数组加载数据的代码(一个有错误)

function loadBlocksFromArray(array){
    var cellDate;
    var cellText;
    var tmpText;
    var i;
    workoutsTD.each(function(){
        cellDate=$(this).attr("data-day");
        i=0;
        $(this).children('.workout-cell').each(function(){ 
            if ((array[cellDate][i])!='empty'){
                cellText=array[cellDate][i];
                $(this).append(createBlock(cellText));
                $(this).removeClass('workout-cell-empty');
            }
            i++;
        });

    });
}

当您在控制台日志中单击sumbit按钮时,您将看到数组的结构。

我在改变星期时遇到错误:

enter code here未捕获的TypeError:无法读取未定义的属性“0”

2 个答案:

答案 0 :(得分:1)

在Javascript中,没有关联数组的概念。你要么有数组(用数字索引),要么有对象(其元素用字符串索引)。

您想要的是包含所有数组的对象。例如:

var data = {
  '3/4/2015' : ['val1', 'val2', 'val3'],
  '3/8/2015' : ['val1', 'val2', 'val3']
};

然后您可以按照自己想要的方式访问元素:

var ele = data['3/4/2015'][1];

答案 1 :(得分:0)

https://jsfiddle.net/x9dnwgwc/

这就是我想要的效果。感谢您提示Harvtronix!

var jsonObj = { workout : {} }

var i;
var k;
var workoutArray = [];

for(i=1; i<=7; i++){
    var newWorkout = i+ "/12/2015";
        for (k=0; k<=2; k++){    
            var newValue = "workoutTitle" + k;
            workoutArray[k]=newValue;
        }
    jsonObj.workout[newWorkout]=workoutArray;

}

console.log(jsonObj);

for(i=1; i<=7; i++){
  var newWorkout = i+ "/12/2015"; 
   var tmpArray= jsonObj.workout[newWorkout];
     console.log(tmpArray);

}