0

代码:

var testarray = [];
var test1 = "ashutosh";
var test2 = "ashutosh2";

if (test1 != test2) {
  testarray.push = "ashutosh3";
  testarray.push = "ashutosh4";
  alert(testarray.length);
}

if (testarray.length != 1) {
  alert(testarray.length);
  alert(testarray[testarray.length - 1]);
  alert(testarray[testarray.length - 2]);
}

但是当所有的警报都出现时undefined。我不知道为什么会这样。

4

2 回答 2

1

push是一个函数,而不是一个属性,所以而不是

testarray.push="ashutosh3";

它是

testarray.push("ashutosh3");

这是我更新该代码的方式,FWIW,但我认为唯一的实质性变化是push正确执行并使用>= 2而不是最后!= 1length检查(否则,如果数组为空,您正在查看条目-1-2,这将未定义):

var testarray = [];
var test1 = "ashutosh";
var test2 = "ashutosh2";

if (test1 !== test2) {
  testarray.push("ashutosh3");
  testarray.push("ashutosh4");
  alert(testarray.length);
}

if(testarray.length >= 2) {
  alert(testarray.length);
  alert(testarray[testarray.length-1]);
  alert(testarray[testarray.length-2]);  
}
于 2013-01-13T17:18:18.270 回答
0

TJ Crowder 已经用 push 回答了这个问题,但我猜你是 JavaScript 新手,所以这里有一些我希望早点知道的有用技巧。

对于每个循环

您可以使用 forEach 循环,而不是编写标准的 for 循环。

for( i in testArray ){
    console.log( i );
}

对象

直到哈希表和模块出现在 JS 中,我们只能使用数组。这是我所知道的最简单的制作对象的方法。

var ArrayUtils = {
    "print" : function(array) {
        console.log(array);
    }
}

由于 ArrayUtils 是一个列表,您可以使用点或括号表示法对其进行扩展

ArrayUtils["size"] = function(array){
   return array.length;
}

ArrayUtils.indexOf = function(array, i){
    return array[i];
}

高阶函数

JavaScript 中的数组带有内置的 map、reduce 和 filter 函数。这三个函数在编写优雅的代码时非常有用。

  1. Map,将序列中的每个元素传递给函数

    testArray.map( function(i){ console.log(i); } );
    
  2. 减少,很好地将数组减少为单个值。在这个例子中,我正在计算数组的总和

    testArray.reduce( function(x,y) { return x+y; } );
    
  3. 过滤器,您可能猜到会从数组中删除元素。在 JS 中, .filter() 返回一个新数组

    testArray = testArray.filter( function(i) { return ( i > 0 ); } );
    

我还读到 JS 支持迭代器和生成器。它们是强大的迭代工具,如果您要在代码库中大量使用迭代,则值得一试。我不这样,这是我推迟做的事情。

于 2013-01-13T20:12:03.007 回答