2017-09-30 124 views
1

嘿刚刚开始的JavaScript,并有一些麻烦写两个数组的功能。一个是一组名称,另一个是引号数组。我不会写出每一个名字和每一个报价,但它的布局是这样的。在javascript中为数组创建函数。

Names = [Jim, Bob, Josh, Tom] 

Quotes = [ 
[ "blah blah blah." 
"quote quote quote."] 
] 

现在报价的每个阵列与名称对应所以自从吉姆是[0]的名称数组在他的报价也将是[0]。我试图创建一个函数,你可以输入像numberofQuotes(“Jim”)这样的东西,并且让它吐出该人有多少引号。但我无法弄清楚如何去做。我仍然基本上是Javascript的新手。

+1

如果我可以建议使用[对象]的(https://developer.mozilla.org/en-US /文档/网络/的JavaScript /参考/ Global_Objects /对象)。您可以创建一个键/值对,其中“Jim”将是引用数组的关键。我想这会更简单 –

回答

1

您可以使用indexOflength来实现此目的。

var names = ['Jim', 'Carl', 'Bob']; 
 
var quotes = [['Foo bar', 'Something smart'], ['something dumb'], []]; 
 

 
function countQuotes (name) { 
 
    // indexOf will return the position the name appears in the names array 
 
    var index = names.indexOf(name); 
 
    // we can use it to get the same position in the quotes array 
 
    // length returns how many items are in the array 
 
    return quotes[index].length; 
 
} 
 

 
var result = countQuotes('Jim'); 
 
console.log(result);

然而,正如在评论中指出,对象将是一个很好的用途:

var people = { 
 
    Jim: [ 
 
    'Foo bar', 
 
    'Something smart', 
 
    ], 
 
    Carl: [ 
 
    'Something dumb', 
 
    ] 
 
}; 
 

 
var countQuotes = function (name) { 
 
    return people[name].length; 
 
} 
 

 
var result = countQuotes('Jim'); 
 
console.log(result);

有一些更多的方法格式化对象,但我会让你试验。

0

通过迭代并根据第一个数组为该键分配值来创建一个key:value对。

稍后,您可以查看报价数量:Obj["Jim"].length

var Names = ['Jim', 'Bob', 'Josh', 'Tom'] 
 

 
var Quotes = [ 
 
    ["blah blah blah.", "Jim again"], 
 
    "quote quote quote.", "Josh quoted", "Tom quoted" 
 
] 
 

 
var Obj = {} 
 

 
for (var i = 0; i < Names.length; i++) { 
 
    Obj[Names[i]] = Quotes[i]; 
 
} 
 

 
console.log("Jim quoted", Obj["Jim"].length);

+0

虽然这样做,没有理由创建一个对象来存储名称旁边的引号,因为它们在两个数组中都有相同的索引。 –