user1974515
user1974515

Reputation: 3

How to access values of array in javascript

Code:

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]);
}

But when all the alerts are showing up undefined. I have no clue why is this happening.

Upvotes: 0

Views: 3718

Answers (2)

Dan
Dan

Reputation: 1179

T.J. Crowder already answer the issue with push but I'm guessing you are new to JavaScript so here are some useful tips I wished knew earlier.

For Each Loops

Instead of writing a standard for loop, you can use a forEach loop.

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

Objects

Till hashtables and modules make their appearance to JS, we are left with using arrays. Here is the easiest method I know of to make an object.

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

Since ArrayUtils is an list, you can extend it using either dot or bracket notation

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

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

Higher-Order Functions

Arrays in JavaScript come with a built-in map, reduce and filter functions. These three functions are highly useful when it comes to writing elegant code.

  1. Map, passes each element in an sequence into a function

    testArray.map( function(i){ console.log(i); } );
    
  2. Reduce, well reduces the array into a single value. In this example i'm calculating the sum of the array

    testArray.reduce( function(x,y) { return x+y; } );
    
  3. Filter, as you could guess removes elements from an array. In JS, .filter() returns a new array

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

I also read that JS has iterator and generator support. They are powerful iteration tools and worth checking out if you are going to heavily use iteration in your code base. I don't so, it's been something I put off as a todo.

Upvotes: 0

T.J. Crowder
T.J. Crowder

Reputation: 1074335

push is a function, not a property, so instead of

testarray.push="ashutosh3";

it's

testarray.push("ashutosh3");

Here's how I'd update that code, FWIW, but I think the only substantive change is doing the push correctly and using >= 2 rather than != 1 in the length check at the end (since otherwise if the array is empty you're looking at entries -1 and -2, which will be undefined):

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]);  
}

Upvotes: 1

Related Questions