これはあなたがこれはそれのためのブラウザのサポートであるES6 ARRAY.FINDに を使用することができることを前提としています
クローム:45.0
のFirefox(Geckoの):25.0(25.0)
のInternet Explorer:いいえサポート
エッジ:12
オペラ:32.0
サファリ:7.1
それでは、私たちはPM、コンサルタントを知っているとしましょう、と多分そのようなオブジェクトで開催されたプロジェクト、:
var known = {
"PM": "John Smith",
"Consultant": "Jim Bob",
"Project": "Awesome Project"
}
し、我々はそうのような配列の内部オブジェクトのリストを持っている:私たちは私たちの作業がFind the object that matches my known object
で伝えたいと思っている何
var listOfProjects = [ {....}...]
。
var foundProject = listOfProjects.find(function(project){
return project["PM"] === known["PM"] &&
project["Consultant"] === known["Consultant"] &&
project["Project"] === known["Project"]
})
するか、私たちはそうのようなevery
と呼ばれる別の高階関数でそれを少しクリーナーを行うことができます。そして、幸いにも私たちのためには、JavaScriptの配列のは、私たちがそうのように、機能に渡すことができますfind
方法を、持っています:私たちは「注意事項」キーを望んでいたので、もし
// Loop through the listOfProjects and return the first one that
// returns true
var foundProject = listOfProjects.find(function(project){
// Loop through all of the keys inside of our known object
// and return true or false if every single one matches
// the given condidtion
return Object.keys(known).every(function(knownKey){
// use the key to see if known at knownKey is equal to
// what you find inside of project at the same key
return known[knownKey] === project[knownKey]
})
})
いずれかの方法で、foundProjectは、実際のプロジェクトの対象となり、我々はその後行うことができます。
var notesForFoundProject = foundProject["Notes"]
場合Array.findを使用することはできません。以下は同じように動作します。
var known = {...}
var listOfProjects = [...]
var found;
for(var i = 0; i < listOfProjects.length; i++){
var current = listOfProjects[i]
if(current["PM"] === known["PM"] &&
current["Consultant"] === known["Consultant"] &&
current["Project"] === known["Project"]){
found = current;
break;
}
}
var notes = found["Notes"] || false
PMと一致するjsonオブジェクトを探して、そのオブジェクトのNotes部分を取得しますか? –
私は上記の例のようにJSONオブジェクトの配列を持っています。私は配列をループしています。それぞれのインデックスについて、私はPM、コンサルタント&プロジェクトがあります。私はその組み合わせのノートを取得する必要があります。 – user1735894
JSON(テキスト)やJavaScriptオブジェクトについて話していますか? 'json'タグの使い方の説明を読んでください。 – trincot