有沒有辦法從其他財產JavaScript對象的屬性
例如(在SQL)的價值得到一個對象的屬性獲取ID從對象其中object.name =「somename」?
我需要獲取該對象的ID,但我只知道名稱。
有沒有辦法從其他財產JavaScript對象的屬性
例如(在SQL)的價值得到一個對象的屬性獲取ID從對象其中object.name =「somename」?
我需要獲取該對象的ID,但我只知道名稱。
我會假設你正在嘗試用一組對象來做到這一點,因爲否則就沒有意義了。
根據您所需的瀏覽器支持,在Array.prototype
上有一種稱爲filter
的方法。如果需要的話,你也可以把它填滿。
的代碼最終會看起來像這樣:
var list = [
{id:1, name:'bob'},
{id:2, name:'jim'},
{id:3, name:'sam'},
{id:4, name:'tim'}
];
var sams = list.filter(function(obj){
return obj.name == 'sam';
});
console.log(sams[0].id);
這裏是一個的jsfiddle鏈接:http://jsfiddle.net/g8rTA/
我想我並不清楚,我試圖通過數組進行過濾。感謝您的幫助 – 2012-07-10 07:30:43
+過濾器'方法,並提到它不支持無處不在:) – Jashwant 2012-07-10 07:56:15
你可以使用這個功能來得到它:
function getObjectByAttribute(list, attr, val){
var result = null;
$.each(list, function(index, item){
if(item[attr].toString() == val.toString()){
result = item;
return false;
}
});
return result;
}
var obj = getObjectByAttribute(yourList, 'name', 'somename');
if(obj) console.log(obj.id);
編輯:
由於@nnnnnn建議,非jQuery的選擇:
function getObjectByAttribut(list, attr, val){
var result = null;
for(var ind in list){
if(list[ind][attr] == val) return list[ind];
}
return null;
}
或者,沒有jQuery,只需使用簡單的'for'循環而不是'$ .each )'。我可以建議你不需要'result'變量嗎?如果找到了,直接返回'item',如果沒有找到,直接返回'null'(或者甚至使用'undefined'作爲未找到的值,然後你甚至不需要最終的'return'語句)。 – nnnnnn 2012-07-10 06:37:12
是的,你說得對,我應該考慮到這一點。關於返回錯誤的事情,您從jQuery .each循環中返回一個非錯誤,就像foor循環中的continue語句一樣,而返回false則循環被破壞。 – davids 2012-07-10 06:43:15
我的歉意。在我看來,我已經跳到了非jQuery版本,但是''.each()'''''''''''''''''''''''''''' – nnnnnn 2012-07-10 06:45:35
你的問題我也不清楚,但我回答這條線。
有沒有辦法從另一個屬性的值中獲取一個對象屬性。
var obj = {
'name' : 'ramesh',
'surname' : 'suresh'
}
var obj2 = {
'props' : 'name',
'method' : 'blah'
}
for(var i in obj){
if(obj.hasOwnProperty(i)){
if(i === obj2['props']){
console.log('Found ' + i); // This will find 'name'
break;
}
}
}
該對象是否在列表中? – davids 2012-07-10 06:29:31
該列表中的對象? – david 2012-07-10 06:29:59
^有什麼可能。 – Daedalus 2012-07-10 06:32:49