代码:
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
时。我不知道为什么会这样。
答案 0 :(得分:1)
push
是函数,而非属性,因此不是
testarray.push="ashutosh3";
它的
testarray.push("ashutosh3");
以下是我更新代码FWIW的方法,但我认为唯一的实质性更改是正确执行push
并使用>= 2
而不是!= 1
在最后的length
检查中(否则,如果数组为空,则查看条目-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]);
}
答案 1 :(得分:0)
T.J。 Crowder已经通过推送解决了这个问题,但我猜你是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函数。在编写优雅代码时,这三个函数非常有用。
Map,将序列中的每个元素传递给函数
testArray.map( function(i){ console.log(i); } );
减少,将数组简化为单个值。在这个例子中,我正在计算数组的总和
testArray.reduce( function(x,y) { return x+y; } );
过滤,您可以猜测从数组中删除元素。在JS中,.filter()返回一个新数组
testArray = testArray.filter( function(i) { return ( i > 0 ); } );
我还读到JS有迭代器和生成器支持。它们是强大的迭代工具,如果您要在代码库中大量使用迭代,则值得一试。我不是这样,这是我作为todo推迟的事情。