Create string using template literal ... Need Help

Tell us what’s happening:
can anyone tell me what is wrong with my code and point me in the right direction ?

Your code so far


const result = {
 success: ["max-length", "no-amd", "prefer-arrow-functions"],
 failure: ["no-var", "var-on-top", "linebreak"],
 skipped: ["id-blacklist", "no-dup-keys"]
};
function makeList(arr) {
 "use strict";

 // change code below this line
 for(let i = 0; i < arr.length; i++){
   const resultDisplayArray = result.failure[i];
   console.log(resultDisplayArray);
   //console.log(`<li class="text-warning">${resultDisplayArray}</li>`);
 }
 // change code above this line

 return resultDisplayArray;
}
/**
* makeList(result.failure) should return:
* [ `<li class="text-warning">no-var</li>`,
*   `<li class="text-warning">var-on-top</li>`,
*   `<li class="text-warning">linebreak</li>` ]
**/
const resultDisplayArray = makeList(result.failure);

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36.

Challenge: Create Strings using Template Literals

Link to the challenge:
https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/es6/create-strings-using-template-literals

i’ve tried this but still no success

for(let i = 0; i < arr.length; i++){
    const resultDisplayArray = [];
    resultDisplayArray = `<li class="text-warning">${arr[i]}</li>`;
  }

Your declaration of resultDisplayArray is inside the for loop, so every loop it is declared again and thus emptied. Besides that, you’re not properly adding the string to the array. You’re actually reassigning the resultDisplayArray constant, which should raise a TypeError, since a constant cannot be reassigned.

So, you need to take the array declaration out of the loop and use resultDisplayArray.push(<your string goes here>) to properly push new string to the array.

1 Like

you mean like so :

const resultDisplayArray = [];
for(let i = 0; i < arr.length; i++){
    resultDisplayArray .push(`<li class="text-warning">${arr[i]}</li>`);
  }

you typed what i needed to read in the first paragraph. thank you

1 Like

Exactly like that!

You’re welcome.

1 Like

Had a similar problem, solved it by declaring outside of loop and pushing to resultDisplayArray instead of arr lol. Thanks!