+ 4
[solved] JavaScript Code Project "Words"
Hi everyone, I have trouble solving the last Code Project in Javascript. I appreciate any hints or help. Thank you. The Problem: >>You are making a text encryptor. It should take multiple words and output a combined version, where each word is separated by a dollar sign $. For example, for the words "hello", "how", "are", "you", the output should be "$hello$how$are$you
quot;. The given code declares a class named Add, with a constructor that takes one rest parameter. Complete the code by adding a print() method to the class, which should generate the requested output.<< My Code so far: class Add { constructor(...words) { this.words = words; } var wo = ""; for(var word : words){ wo += "quot;+word; } wo += "quot;; return wo; this.print = function(){ this.wo; } } var x = new Add("hehe", "hoho", "haha", "hihi", "huhu"); var y = new Add("this", "is", "awesome"); var z = new Add("lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit")20 Réponses
+ 7
Lena Morawietz
It's really nice that you are getting very complex answers without any explanation, but I wonder if you are learning anything from them.
Might I suggest you revisit your understanding of the for loop, or use a while loop to iterate through the items presented to your function.
+ 5
Lena Morawietz
No need to use loop just use join function.
console.log("quot; + (this.words).join("quot;) + "quot;);
+ 3
Your code showing error after closing class
body check your loops
Try this one
class Add {
constructor(...words) {
this.words = words;
}
print(){
var y ="";
for(x of this.words){
x=x.replace(/[^a-zA-Z ]/g, "")
if(x!=""){
y += '#x27;+x;
}
}
console.log(y+'#x27;);
}
}
var x = new Add("hehe", "hoho", "haha", "hihi", "huhu");
var y = new Add("this", "is", "awesome");
var z = new Add("lorem", "ipsum", "dolor", "sit", "amet", ",", "consectetur", "adipiscing", "elit");
x.print();
y.print();
z.print();
+ 3
Rik Wittkopp I thought the same. The answer may help to solve the problem, but I want to find a solution I could learn from.
Thanks for your suggestion, I will do that.
+ 3
print()
{
//the function defination, wrap into this :
var wo = "";
for(var word of this.words) // syntax : using of
wo += "quot;+word;
wo += "quot;;
console.log(wo); //there is no catching in calling so print directly instead of returning..
}
}
edit: Lena Morawietz
//' In ' predicate returns indexes ..
//Hope it clears..
+ 3
Thank you so much. I didn't thought of the keyword "of". Now I really learnt something thanks to you :)
+ 2
yes, i very much agree with Rik Wittkopp also you don't need to know everything in JavaScript to make a working program you just gotta have the basic understanding about js rest of the things are only meant to make your code easy and readable.
+ 1
class Add {
constructor(...words) {
this.words = words;
}
print() {
let word = this.words.map(i => i.concat('#x27;))
return '#x27; + word.join('');
}
}
var x = new Add("hehe", "hoho", "haha", "hihi", "huhu");
var y = new Add("this", "is", "awesome");
var z = new Add("lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit");
x.print();
y.print();
z.print();
+ 1
I got a really weird output. Instead of the words it prints $0$1$2 and so on...
What could be the reason?
class Add {
constructor(...words) {
this.words = words;
}
print(){
var wo = "";
for(var word in this.words){
wo += "quot;+word;
}
wo += "quot;;
console.log(wo);
}
}
+ 1
Lena Morawietz
It looks like you are iterating through the loop and attaching $ to each iteration.
That's good, it's a step in the right direction.
Now you need to review how to iterate through a list or string
Keep going, you are close
+ 1
Hey gys, thank u so much for hint.
0
Lena Morawietz
Let us know how you go!
😁👍
0
We can solve by various way there is so many ways to do same like noob will get all word from words array and concate the $ sign and log it console but it will make our code ugly and more heavier so u should build algorithm then move with your algorithm.
0
unique boss there is no way we can achieve it without iteration.
even if we use buildin functions like join, concat, map or regex, it is internally getting iterated.
0
【ACE】 The join() method creates and returns a new string by concatenating all of the elements in an array (or an array-like object), separated by commas or a specified separator string. If the array has only one item, then that item will be returned without using the separator.
You can use join also , map also just need to choose a way 😉.
Join method
it will return haha$haha$ if there is one item it will return haha only as per description so u should prefix with $ and you done like above given example which is upvoted for 7 times
0
【ACE】
class Add
{
constructor(...words) {
this.words = words
}
//print word
print() {
console.log("quot;+this.words.join('#x27;)+"quot;);
}
}
var a = new Add("hello", "world");
a.print();
var b = new Add("hello", "how", "are", "you");
b.print();
0
unique boss i know how to use join, im just saying we can't concate array elements by seperator without iterating throught the elements. if we use join function then it is also iterating through the elements.
Array.prototype.join implementation:-
Array.prototype.myJoin = function(s = ""){
let temp = "";
for(let i = 0; i < this.length - 1; i++) {
temp += this[i] + s;
}
return temp + this[this.length - 1];
}
let arr = [1,2,3,4,5,6,7,8,9];
let str = arr.myJoin("->");
console.log(str);
not only noob, even the computer itself would iterate through all the word of words. i just wanted to correct you there lol.
0
【ACE】 hey man you can use length property to check array length and after that we can achieve the following by get array element with index but we have write long code for that without using iterator but we have to write more piece of line code , there is lots of way to solve one problem but we use efficient way to do so .