2017-09-30 88 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

雖然這樣做,沒有理由創建一個對象來存儲名稱旁邊的引號,因爲它們在兩個數組中都有相同的索引。 –