2017-04-14 58 views
-3

我想做一个简单的JavaScript函数,它需要一个字符串作为输入。例如,如果我的“地方”数组中的元素,“房子”,“农场”,“粮仓”,“酒店”,我输入字符串:如何使用字符串内的数组元素打印多个句子?

Hello, welcome to my $place. I hope you like it here at my $place. 

输出会是这样:

Hello, welcome to my house. I hope you like it here at my house. 
Hello, welcome to my farm. I hope you like it here at my farm. 
Hello, welcome to my barn. I hope you like it here at my barn. 
Hello, welcome to my hotel. I hope you like it here at my hotel. 
+4

哪里是你的代码写的地图吗?究竟是不是在工作呢? – csmckelvey

回答

0

你可以将你的元素存储在一个数组中,然后迭代它,例如与Array#forEach并记录每个字符串与数组中指定的元素。

var place = ["house", "farm", "barn", "hotel"]; 
 
    place.forEach(v => console.log("Hello, welcome to my " + v + ". I hope you like it here at my " + v + "."));

如果你想准确地显示用户输入什么,可以使用下面的方法。

var place = prompt(); 
 

 
console.log("Hello, welcome to my " + place + ". I hope you like it here at my " + place + ".");

+2

好吧,看到SO不是代码编写服务,人们要求[MCVE](https://stackoverflow.com/help/mcve)知道OP实际上已经尝试过某些方法来解决问题。当他们发布他们的代码时,我们可以介入并帮助调试或修复它。 – mhodges

+0

但是为了记录,我没有降低问题或答案 - 只是让你知道为什么人会这样做。 – mhodges

+0

好的,谢谢你,但无论如何,这样做没有硬编码的价值?我希望程序能够接受来自用户的输入。 –

0

使用一些很好ES2015特征(块范围的变量,模板文本和箭头函数)。

let places = ["house", "farm", "barn", "hotel"]; 
 
places.forEach(a=>console.log(`Hello, welcome to my ${a}!`));

另外,怎么样一些不错的功能发电机?

function* welcome2places(placesArray) { 
 
    let places = placesArray; 
 
    yield* places; 
 
} 
 
let welcome = welcome2places(["house", "farm", "barn", "hotel"]); 
 
let welcomeMessage = welcome.next(); 
 
while (!welcomeMessage.done) { 
 
    console.log(`Welcome to my ${welcomeMessage.value}!`); 
 
    welcomeMessage = welcome.next(); 
 
}

0

可以与句子每个数组元素,槽与元素取代的“$地方”所有出现...

console.log(["house","farm"].map(el=>"Hello, welcome to my $place. I hope you like it here at my $place.".split("$place").join(el)).join("\n"); 
+0

我喜欢创造性地使用split/join! – Christoph

+0

@Christoph通常用于多个替换... –

+0

那么,我宁愿使用模板字符串或字符串连接,因为它更有效。数组操作是相当昂贵的... – Christoph

相关问题