iT邦幫忙

0

在 Hash 中如何找相同 value 的 key?

例如:

hash = { 'a' => 1, 'b' => 1, 'c' => 2, 'd' => 3 }
findkeys(1, hash)
#能夠獲得一個陣列結果:
[ 'a', 'b' ]

想知道這 findkeys 的 function 可以怎麼寫?
或者是否有現成的 function 可以處理這 hash 的問題?
語言是 jQuery 或 prototype

1 個回答

14
fillano
iT邦超人 1 級 ‧ 2009-10-12 16:33:36
最佳解答

語言是jQuery或prototype?其實應該就是javascript吧?

所以這個hash其實只是一個object吧?這樣搜尋其實很花功夫,因為要遍歷整個物件屬性。

<pre class="c" name="code">
var hash = {a:1, b:2, c:1, d:3};
function findkeys(v, h) {
	var ret = [];
	for (var i in h) {
		if (h[i] === v) {
			ret.push(i);
		}
	}
	return ret;
}
alert(findkeys(1,hash));
jamesjan iT邦高手 1 級 ‧ 2009-10-13 13:18:57 檢舉

看 fillano 大的程式真是賞心悅目,很期待您的鐵人賽文章!

這作法好清楚…,為什麼想搜出同樣值的key?是為了希望在頁面,就可以把已找出的結果,在裡面再區分有共同性質的項目,而不想又再往server去重做query。

我要發表回答

立即登入回答