仍然是javascript的新手,并且阵列中的数组遇到了很多麻烦。我的任务是从两个数组中提取名称和引号。我的任务是制作一个功能,可以在其中插入一个引用并吐出响应" John说:Blah blah blah"他们就是这样设置的。
let names = [ John, James, Joe, Justin]
let quotes = [
[ "Help me."
"Blah blah blah blah"
"Blah blah blah" ]
[ "Blah blah blah"
"Quote here" ]]
现在有更多的名字和引号,而不是我为了简洁而停下来的名字和引号。名称和引号都匹配,因为names数组中的第一个名称与引号数组中的第一个引号数组相对应。这是我为它编写代码的尝试。
function whoSaidThis (quote) {
var index = quotes.indexOf(quote);
return crewmembers.index
}
这回归未定义,我无法弄清楚原因。
答案 0 :(得分:1)
为什么返回undefined :
您的函数返回undefined
,因为您没有对象index
的初始化属性crewmembers
,因此您尝试访问不存在的crewmembers
属性<{1}}已退回。
这是Javascript方式告诉你“船员对象不存在嘿索引属性”
此外,关于您的尝试,您尝试在undefined
数组中搜索qoute
,而不是在{{1}的每个项目中搜索qoutes
数组。
当你点击一个匹配时,你返回该项数组的索引,这个索引是qoute
数组中该项数组的索引。
您可以这样做:
qoutes
答案 1 :(得分:0)
您可以使用Array#findIndex
和Array#includes
进行搜索,并获取数组的索引以返回相应的名称。
function whoSaidThis(quote) {
var index = quotes.findIndex(q => q.includes(quote));
return names[index];
}
let names = ["John", "James", "Joe", "Justin"],
quotes = [
["Help me.", "Blah blah blah blah", "Blah blah blah"],
["Blah blah blah", "Quote here"]
];
console.log(whoSaidThis("Quote here"));
&#13;
答案 2 :(得分:0)
此代码实际上并未解决您的问题。但它可能有所帮助。
请注意,我在这里使用ES6。但您可以轻松地将其转换为ES5
const personsQuotes = {
'John': ['bla', 'Yeah', 'No'],
'James': ['qew', 'ert', 'dasd'],
'Joe': ['ok', 'ko', 'oko'],
'Justin': ['ZZz', 'zzz', 'bla']
}
function whoSaidThis(phrase) {
let ans = [];
for(person in personsQuotes) {
personsQuotes[person].forEach((quote) => {
if (quote === phrase)
ans.push(person);
});
}
return ans.length ? ans : null;
}
console.log( whoSaidThis('kek') );
console.log( whoSaidThis('ok') );
console.log( whoSaidThis('bla') );
&#13;
答案 3 :(得分:0)
我认为你在找的是这样的。
在您的示例中,多个人说同样的事情,但输出是单个名称。您只需在whoSaid
中保留一个数组,然后返回/打印该数组,如果数组在for循环结束时为空,则返回['nobody']
。
let names = [ 'John', 'James', 'Joe', 'Justin'];
let quotes = [
["Help me.",
"Blah blah blah blah",
"Blah blah blah"],
[ "Blah blah blah",
"Quote here" ]];
function whoSaid(quote){
for(var nameIndex = 0; nameIndex < quotes.length; nameIndex++){
if(quotes[nameIndex].indexOf(quote) !== -1){
return names[nameIndex];
}
}
return 'nobody';
}
function printQuote(quote){
console.log(whoSaid(quote), ' says: ', quote);
}
printQuote('Help me.' );
printQuote('Quote here' );
printQuote('Nobody said that');