Можно решить Вашу задачу "в лоб":
<html>
<head>
</head>
<body>
<div onclick="alert(byName(arr[1]))" style="width:40px; cursor:pointer; border:1px solid blue; text-align:center">OK</div>
<div onclick="alert(byName(arr[2]))" style="width:40px; cursor:pointer; border:1px solid blue; text-align:center">OK</div>
<div onclick="alert(byName(arr[3]))" style="width:40px; cursor:pointer; border:1px solid blue; text-align:center">OK</div>
<script>
byName=function(ob){
for(var i in this){
if(this[i]===ob) return i
}}
var stone = ["rubin", "almaz", "izumrud", "sapfir"]
var apple = ["green", "red", "bad"]
var error = ["text", "number", "img"]
var arr = ["", stone, apple, error]
</script>
</body>
</html>
Но такое решение может сказаться на производительности, поскольку в глобале может быть очень много имен, цикл будет проходить их все, пока не наткнется на нужный объект. К тому же, один и тот же объект может иметь несколько имен. Лучше сразу вынести определения массивов в отдельный неймспейс, если есть такая возможность.