0

Hello I'm new student in js, I'm trying to use split in output[2] so i can take the Month's number dd-mm-YYYY and using push to a new array to save em with a new name of months (str ?) .

ex: 21/05/1989 with a new name of month in a new array : May

var output = [ 
    [ '0001', '0002', '0003', '0004' ],   
    [ 'Roman Alamsyah', 'Dika Sembiring', 'Winona', 'Bintang Senjaya' ],
    [ '21/05/1989', '10/10/1992', '25/12/1965', '13/9/1994', '10/8/1994', '19/7/1994' ],
] ;

function mixarray(){

var months =[]; //probably wrong should just push to new array in output ?
  //months.push([]);
  //console.log(output[2].length);

  for(var i = 0; i < output.length  ;i ++){
   // console.log(output[i]);
    
    for(var j=0 ; j< output[i].length; j++){ 
      months = output[i][j].split("/");
    }
  }
console.log(months);  
}

mixarray(output);

I did some split but somehow my brain crashed after trying to push em to new array and combine it with month's name(probably using if-else for month's name huh ?) it might better to push in new-array in output so it will show like this later with sorted ( i can do the sort later ) :

Months:
August,Dec,July,May,Oct,Sept

I just need to know how this months be able to push into a new array :

['May','Oct','Dec','Sept','August','July'];

from this :

[ '21/05/1989', '10/10/1992', '25/12/1965', '13/9/1994', '10/8/1994', '19/7/1994' ]
2
  • You are overwriting value of months in every iteration of the loop when you use months = . End result will be months is the same as the split in last iteration Commented Nov 16, 2016 at 4:56
  • you want to create a new array of months or replace content of output[2] with months? Commented Nov 16, 2016 at 4:56

5 Answers 5

1

If you know that the dates will always be in the third array in the output variable, then you can skip the nested loop

const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
output = [[],[],[ '21/05/1989', '10/10/1992', '25/12/1965', '13/9/1994', '10/8/1994', '19/7/1994' ]]
let months = [],
    length = output[2].length;
for (var i=0; i<length; i++) {
  var elem = output[2][i];
  months.push(MONTHS[elem.split('/')[1]-1]);
}

console.log(months);
Sign up to request clarification or add additional context in comments.

Comments

1

Here's a very simple proof of concept:

var monthMap = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"];

// output [2]
var fullArr = [ '21/05/1989', '10/10/1992', '25/12/1965', '13/9/1994', '10/8/1994', '19/7/1994' ];

var monthArray = fullArr.map(function(v) {
  var numericMonth = Number(v.split('/')[1]);
  
  return monthMap[numericMonth - 1];
});

console.log(monthArray); // ["May", "Oct", "Dec", "Sept", "Aug", "Jul"]

Comments

0

JavaScript

// Need the names of the months tied to array to pull names
var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

// This is your input (not sure why it is named output)
var output = [ 
    [ '0001', '0002', '0003', '0004' ],   
    [ 'Roman Alamsyah', 'Dika Sembiring', 'Winona', 'Bintang Senjaya' ],
    [ '21/05/1989', '10/10/1992', '25/12/1965', '13/9/1994', '10/8/1994', '19/7/1994' ],
];
  
// Converts DD/MM/YYYY to a JavaScript date object
function toDate(dateStr) {
    var parts = dateStr.split("/");
    return new Date(parts[2], parts[1] - 1, parts[0]);
}

// Pass in an array of date strings DD/MM/YYYY
// Returns: An Array of Month Strings
function mixArray(arr){
  var output = [];
  for(var i = 0, len = arr.length; i < len; i++){
    output.push(monthNames[(toDate(arr[i])).getMonth()]);
  }
  return output;
}

console.log(mixArray(output[2]));

Comments

0

You may try this:

function mixarray(){

  var months =[]; 

  for(var i = 0; i < output.length  ;i ++){
   // console.log(output[i]);

     for(var j=0 ; j< output[i].length; j++){
       var parts = output[i][j].split("/");

       if (parts.length === 3) { 
          months.push(output[i][j].split("/")[1])
       }
    }
  }
   console.log(months);  
}

Comments

0

Apply the for loop length with second index of the output array.And compare the index with month array .Then print the exact month of the array.These all the month push into newmonths array

var output = [ 
        [ '0001', '0002', '0003', '0004' ],   
        [ 'Roman Alamsyah', 'Dika Sembiring', 'Winona', 'Bintang Senjaya' ],
        [ '21/05/1989', '10/10/1992', '25/12/1965', '13/9/1994', '10/8/1994', '19/7/1994' ],
    ] ;
      var month=['jan' ,'feb','mar','aprl','may','jun','july','aug','sep','oct','nov','dec'];
   function mixarray(){
       var   newmonths =[];
         for(var j=0 ; j< output[2].length; j++){ 
              var mon = output[2][j].split('/');
              newmonths.push(month[mon[1]-1])
              }
          console.log(newmonths)
        }
   mixarray(output);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.