我有一個相當簡單的JavaScript對象,我需要通過使用其他已知屬性引用其中一個屬性。獲取與其他屬性匹配的屬性
{
"PM":"Joe Smith",
"Consultant":"[email protected]",
"Project":"ContainerStore",
"Notes":"This is my awesome note"
}
所以使用上述作爲一個例子,我將有項目,顧問&下午,我需要返回筆記,鑑於組合。
我有一個相當簡單的JavaScript對象,我需要通過使用其他已知屬性引用其中一個屬性。獲取與其他屬性匹配的屬性
{
"PM":"Joe Smith",
"Consultant":"[email protected]",
"Project":"ContainerStore",
"Notes":"This is my awesome note"
}
所以使用上述作爲一個例子,我將有項目,顧問&下午,我需要返回筆記,鑑於組合。
這假定您可以使用ES6 ARRAY.FIND 這是它的瀏覽器支持:
鉻:45.0
火狐(壁虎):25.0(25.0)
的Internet Explorer:不支持
邊緣:12
歌劇:32.0
Safari瀏覽器:7.1
所以我們可以說,我們知道PM,顧問,和項目中的對象可能持有像這樣:
var known = {
"PM": "John Smith",
"Consultant": "Jim Bob",
"Project": "Awesome Project"
}
,然後我們有這樣一個數組內的對象的列表:
var listOfProjects = [ {....}...]
我們是想告訴我們的工作是Find the object that matches my known object
。而幸運的是,JavaScript數組的有find
方法,我們可以在一個函數傳遞,就像這樣:
var foundProject = listOfProjects.find(function(project){
return project["PM"] === known["PM"] &&
project["Consultant"] === known["Consultant"] &&
project["Project"] === known["Project"]
})
或者我們可以用一種叫every
像這樣高階函數讓它一點點清潔:
// 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
這是整潔的.... – Thalaivar
請提及es6。 –
@NinaScholz我不知道我使用ES6。我認爲Array#extras是ES5的一部分。根據[this](https://code.tutsplus.com/tutorials/what-they-didnt-tell-you-about-es5s-array-extras--net-28263)文章,他們是ES5規範。 –
你想找到與PM匹配的json對象,然後獲取該對象的Notes部分? –
所以我有一個像上面的例子中的JSON對象的數組。我正在循環訪問數組,對於每個索引我有PM,Consultant&Project,我需要獲取該組合的註釋。 – user1735894
你是在談論JSON(文本)還是關於JavaScript對象?請閱讀'json'標籤的使用說明。 – trincot