2017-09-30 4 views
1

ちょうどjavascriptを起動し、2つの配列の関数を書くときに問題があります。 1つは名前の配列であり、1つは引用符の配列です。私はすべての名前とすべての見積もりを書くつもりはありませんが、そのように配置されています。javascriptで配列の関数を作成する。

Names = [Jim, Bob, Josh, Tom] 

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

今ジムがされるためので、引用符の各アレイは名に対応する[0]名前の配列に彼の引用符もなります[0]。私はnumberofQuotes( "Jim")のようなものを入力し、その人が持っていた引用数を吐き出すことができる関数を作成しようとしていました。しかし、私はそれを行う方法を理解することはできません。私はまだJavascriptの初心者です。

+1

後で、引用符の数を確認することができます/ docs/Web/JavaScript/Reference/Global_Objects/Object)。 "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ペアを反復し、最初の配列に従ってキーに値を割り当てることによってペアを作成します。私は、[オブジェクト]の使用(https://developer.mozilla.org/en-USを提案することができる場合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

これは動作しますが、両方の配列で同じインデックスを持つので、名前の横に引用符を格納するオブジェクトを作成する理由はありません。 –

関連する問題