是否有的JavaScript或任何不是基於循環的方法JQuery的,可以從檢查對象的屬性一定價值的存在。我的意思是,如果我有查找對象的值
obj = { prop1:val, prop2:val2 }
是可能的,也許一個語句檢查的OBJ值之間VAL2存在?
UPDATE 1:這裏的循環不是關鍵!我可以使用循環,如果它包裹在一些JQuery預定義的功能!
更新2: 我認爲寫一個手工功能並不是那麼高雅。我想找一些基於庫的解決方案來解決這個常見和常見的問題。
是否有的JavaScript或任何不是基於循環的方法JQuery的,可以從檢查對象的屬性一定價值的存在。我的意思是,如果我有查找對象的值
obj = { prop1:val, prop2:val2 }
是可能的,也許一個語句檢查的OBJ值之間VAL2存在?
UPDATE 1:這裏的循環不是關鍵!我可以使用循環,如果它包裹在一些JQuery預定義的功能!
更新2: 我認爲寫一個手工功能並不是那麼高雅。我想找一些基於庫的解決方案來解決這個常見和常見的問題。
不,你不能找到一個對象中的值是否存在於沒有循環的語句中。
您可以使用本地API或庫..但他們將內部循環所有值。
任何其他方法的收費將與迭代對象相同..所以我會寫一個簡單的for
循環來做到這一點。
我只是簡單地在腳本文件中寫下這4行代碼,並且包含該腳本文件,而不是包含一個庫..這將是相同的。 http://jsfiddle.net/sQW4P/2/ < - 如果您需要這樣的功能,請將其套用。
這裏的循環不是關鍵!如果包裝在某個JQuery預定義函數中,我可以使用循環! –
@MichaelZ,那麼你需要澄清你的問題。 – zzzzBov
@MichaelZ我不認爲jQuery中有這樣的功能。因此,如果您擔心網頁內部存在循環,請將其移至腳本文件,將其命名爲函數並調用該函數。我認爲它應該可以在其他一些庫中使用..但是爲此添加一個新庫是不行的。 –
我能想到的唯一方法是JSON:
new RegExp(':\"'+val+'\"').test(JSON.stringify(obj))
如果你的罰款與使用功能,無需在庫看,這是隻有幾個字節:
function find(o, v) {
for(var i in o) {
if (o[i] === v) return true;
}
}
find(obj, val2);
這工作與jQuery:
$.grep($.map(obj, function(v,k){return v}), function(el){return el == val2})
你可以把它包起來,像這樣:
function hasVal(o, v) {
$.grep($.map(o, function(v,k){return v}), function(el){return el == v}).length > 0
}
如果你確定使用外部庫,Underscore.js相當簡潔:
_.contains(_.values(obj), "val2");
// true
這是下劃線的values方法:
返回物體的所有值ct的屬性。
下面是從source code它的實現:
// Retrieve the values of an object's properties.
_.values = function(obj) {
var values = [];
for (var key in obj) if (_.has(obj, key)) values.push(obj[key]);
return values;
};
正如你所看到的,它只是遍歷該對象中的鑰匙,並把它們推到一個數組。所以,不,沒有迭代就不可能做到這一點。
簡答:不,您必須迭代對象,或者使用迭代對象的函數。 – zzzzBov
取決於你正在嘗試做什麼。您是否試圖測試另一個對象的已知屬性的存在? –
是的,那正是我想要做的! –