fill an array with arrays programmatically

You could just split, map and fill an array to accomplish the same output, no need for any for loop at that time

var str1 = "do you ever looked";
var str2 = "do you fr ever looked";

let subArrayLength = str2.split(" ").length;
let sims = str1.split(' ').map( value => new Array( subArrayLength ).fill( value ) );
console.log(sims);


Here is a single line solution using just Array.from and split.

Explanation

  • s1 and s2 are respectively the two strings splitted by a blankspace.
  • The first array.from inherits from s1 its length, the second argument is invoked to fill all the values. For that second argument, we care about the index (i).
  • The second array.from inherits from s2 its length, for that one we don't care about either of the arguments, since we will just need the s1 element at index i of the previous loop (so, s2.length times s1[i]). '' + is just the equivalent of toString, which is unneeded, but the main example had it, so...

var str1 = "do you ever looked", s1 = str1.split(' ');
var str2 = "do you fr ever looked", s2 = str2.split(' ');

let sims = Array.from(s1, (_,i) => Array.from(s2, () => '' + s1[i]));
console.log(sims);


You could easily get this done by pushing empty arrays into your sims-array inside your first loop, like in the example below:

var str1 = "do you ever looked";
var str2 = "do you fr ever looked";

let sims = [];


let s1 = str1.split(" ")
let s2 = str2.split(" ")

for (var j = 0; j < s1.length; j++) {
  sims.push([]); // this does the trick :-)
  for (var i = 0; i < s2.length; i++) {
    sims[j].push(s1[j].toString());
  }

}

console.log(sims);

Tags:

Javascript