搜索javascript枚举

Searching through a javascript enum

本文关键字:枚举 javascript 搜索      更新时间:2023-09-26

我有以下javascript enum:

// Rooms
var rooms = {
 1: 'First Room',
 2: 'Second Room',
 3: 'Third Room',
};

我可以很容易地得到房间描述如下:

// Get Room Description
var roomOne = 1;
var roomdesc = rooms[roomOne];

如果我有房间描述"第一间房间",我想知道房间号,那该怎么办?

我试着:

// Get room number
var roomIndex = rooms.indexOf('First Room');
var roomNum = rooms[roomIndex];

但是indexOf没有定义。我怎样通过房间描述得到房间号?

感谢

PS:忘了说了。我不能更改房间对象。它已经在其他领域得到了应用!此外,我想做到这一点,不使用原型或jquery。谢谢。

试试这个:

var rooms = {
    1: 'First Room',
    2: 'Second Room',
    3: 'Third Room',
};
function test(val){
 for (var key in rooms) {
   if(rooms.hasOwnProperty(key))
    if (rooms[key] == val) {
        alert("Key:"+key);
    }
 }
}
test('First Room');//Pass the value you want to search for

我建议您使用Array's:

var rooms = ['First Room','Second Room','Third Room'];
// Get Room Description
var roomOne = 0;
var roomdesc = rooms[roomOne];
// Get room number
var roomIndex = rooms.indexOf('First Room');
var roomNum = rooms[roomIndex];
console.log( roomNum )

数组不是从零开始索引的

试试这个:

var test = {
    1: 'First Room',
    2: 'Second Room',
    3: 'Third Room',
};
function getKeyByValue (obj, value) {
    for( var prop in obj ) {
        if( obj.hasOwnProperty( prop ) ) {
             if( obj[ prop ] === value )
                 return prop;
        }
    }
}
console.log(getKeyByValue( test, "Second Room" ));  // logs 2