简单的数组问题

时间:2011-01-26 22:01:32

标签: javascript arrays

我有一个二维数组:

var fondetcaption = [
        ["fond/fond1.jpg","« aaa"],    
        ["fond/fond2.jpg","« bbb"],
        ["fond/fond3.jpg","« ccc"],
        ["fond/fond4.jpg","« ddd"]          
    ];

该数组在......

中可以有4,7,10个任意数量的值

我想知道我有多少对值(在这种情况下应该返回4)

var howmany = fondetcaption.lenght; // doesn't work !

之后......我将展示fondetcaption[0][0](第一个背景) 然后单击按钮我想显示下一个:[1][0]然后下一个[2][0]然后[3][0]再然后再[0][0] ....推送没有'似乎工作。

有什么想法吗?

7 个答案:

答案 0 :(得分:5)

检查你的拼写..

fondetcaption.length

答案 1 :(得分:4)

正如其他人所说,它是length,而不是lenght

但似乎没有人解决你问题的第二部分,所以:

您不需要push来循环显示值。您只需要一个索引:

var fondetcaption = [
    ["fond/fond1.jpg","« aaa"],    
    ["fond/fond2.jpg","« bbb"],
    ["fond/fond3.jpg","« ccc"],
    ["fond/fond4.jpg","« ddd"]          
];
var fondetcaptionIndex = 0;

// Call this when you click your button or whatever
function getNextBackground() {
    if (fondetcaptionIndex >= fondetcaption.length) {
        fondetcaptionIndex = 0;
    }
    return fondetcaption[fondetcaptionIndex++];
}

或者,如果您愿意,您可以直接将索引放在数组对象上,因为JavaScript数组对象可以具有任意非元素属性,这有助于将符号保持在一起:

var fondetcaption = [
    ["fond/fond1.jpg","« aaa"],    
    ["fond/fond2.jpg","« bbb"],
    ["fond/fond3.jpg","« ccc"],
    ["fond/fond4.jpg","« ddd"]          
];
fondetcaption.index = 0;

// Call this when you click your button or whatever
function getNextBackground() {
    if (fondetcaption.index >= fondetcaption.length) {
        fondetcaption.index = 0;
    }
    return fondetcaption[fondetcaption.index++];
}

实际上,你甚至可以将函数作为数组的一部分:

var fondetcaption = [
    ["fond/fond1.jpg","« aaa"],    
    ["fond/fond2.jpg","« bbb"],
    ["fond/fond3.jpg","« ccc"],
    ["fond/fond4.jpg","« ddd"]          
];
fondetcaption.index = 0;
fondetcaption.getNext = function() {
    if (this.index >= this.length) {
        this.index = 0;
    }
    return this[this.index++];
};

// Use
background = fondetcaption.getNext();

如果使数组本身成为那些额外属性的容器困扰你(它困扰一些人),将整个事物包装在一个对象中:

var fondetcaption = (function() {
    var index = 0,
        values = [
            ["fond/fond1.jpg","« aaa"],    
            ["fond/fond2.jpg","« bbb"],
            ["fond/fond3.jpg","« ccc"],
            ["fond/fond4.jpg","« ddd"]          
        ];

    function fondetcaption_getNext() {
        if (index >= values.length) {
            index = 0;
        }
        return values[index++];
    }

    return {
        values:  values,
        getNext: fondetcaption_getNext
    };
})();

// Sample use:
background = fondetcaption.getNext();

// Original array still accessible if desired as fondetcaption.values

答案 2 :(得分:3)

你有没有尝试过:

var howmany = fondetcaption.length;

您的原始帖子有拼写错误,长度需要长度

答案 3 :(得分:3)

尝试length

alert(fondetcaption.length);

答案 4 :(得分:1)

不确定是什么错,因为它在这里工作正常..

var fondetcaption = [
        ["fond/fond1.jpg","« aaa"],    
        ["fond/fond2.jpg","« bbb"],
        ["fond/fond3.jpg","« ccc"],
        ["fond/fond4.jpg","« ddd"]          
];

alert(fondetcaption.length); 

http://jsfiddle.net/tLPwp/

实际上fondetcaption.lenght实际上是从代码中复制的,因此拼写错误。

答案 5 :(得分:1)

这将返回数组的长度:     fondetcaption.length

答案 6 :(得分:0)

您的代码输入错误。它应该是var howmany = fondetcaption.length,而不是... fondetcaption.lenght

我建议您使用Firebug,Chrome或Safari控制台等工具。它可能非常有用,特别是对于这些问题。我复制粘贴你的代码,试过它,它就像魅力一样。当然,修复了上述拼写错误。

干杯。