我正在进行一个javascript练习,要求我构建一个函数,将现有客户的名字从一个数组中取出来放入队列中。函数返回一个字符串告诉客户他们的位置。 示例输出:
takeANumber(katzDeliLine, "Ada"); // "Welcome, Ada. You are number 1 in line."
takeANumber(katzDeliLine, "Grace"); // "Welcome, Grace. You are number 2 in line."
这是我的尝试:
function takeANumber(katzDeli, name) {
var katzDeliLine = []
name = ["Ada", "Grace", "Kent"]
for ( let i =0; i<name.length; i++){
katzDeliLine.push(`Welcome ${name[i]}, You are ${i} in line`)
}
return katzDeliLine
}
我的回程打印出整个数组
[ 'Welcome Ada, You are 0 in line', 'Welcome Grace, You are 1 in line', 'Welcome Kent, You are 2 in line' ]
为了一次收到1条消息,我该如何调整代码。
答案 0 :(得分:0)
function takeANumber(katzDeli, name) {
var katzDeliLine = []
names = ["Ada", "Grace", "Kent"]
for ( let i =0; i<names.length; i++){
if(names[i] == name) {
return `Welcome ${name[i]}, You are ${i} in line`;
}
}
return "You are not in our system";
}
您也可以将其传递给变量。 你不能有2个同名的变量。所以我重命名了数组“name”,它变成了“名字”
答案 1 :(得分:0)
Array.push
在适当的位置工作,它不返回新数组,因此您应该定义函数的外部队列,并将该数组传递给函数。你不应该在你的函数中循环,你应该只是push()
一个新项目到提供的数组并返回数组的length
(减1)。
答案 2 :(得分:0)
正如我所说,你想要将队列和名称传递给一个函数,该函数应返回队列中的&#34;位置&#34;消息。
let someQueue = ['Ada', 'Grace', 'Kent'];
function getPositionInQueue(queue, name) {
let position = queue.indexOf(name);
return (++position) ? `Welcome ${name}. You are ${position} in line.` : `You are not in line`;
}
getPositionInQueue(someQueue, 'Ada'); // "Welcome, Ada. You are number 1 in line."
答案 3 :(得分:0)
在您的实际代码中,您将使用您在函数中声明的数组覆盖函数的name
参数。您应该为它们使用不同的变量名称。
您可以使用Array.proptotype.forEach()
方法循环names
数组并提取正确的数组。
我不知道我是否正确理解了您的需求,您想要获取数组中给定name
值的索引,并将其作为新的string
打印出来输出数组。
<强>演示:强>
这就是你的代码:
function takeANumber(name) {
var names = ["Ada", "Grace", "Kent"];
var katzDeliLine = [];
var index = 0;
names.forEach(function(item, key) {
katzDeliLine.push('Welcome ' + item + ', You are ' + (key + 1) + ' in line');
if (item === name) {
index = key;
}
});
return katzDeliLine[index];
}
console.log(takeANumber("Ada"));
console.log(takeANumber("Grace"));
&#13;