搜索javascript枚举

搜索javascript枚举,javascript,Javascript,我有以下javascript枚举: // 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 roo

我有以下javascript枚举:

// 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是未定义的。如何根据房间描述获得房间号

谢谢


附言:忘了提了。我无法更改房间对象。它已经在其他领域使用了!另外,我希望在不使用prototype或jquery的情况下完成这项工作。谢谢。

我建议您为此使用阵列:

var-rooms=[“第一个房间”,“第二个房间”,“第三个房间];
//获取房间描述
var roomOne=0;
var roomdesc=房间[roomOne];
//拿到房间号
var roomIndex=rooms.indexOf(“第一个房间”);
var roomNum=房间[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
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
试试这个:

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
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

谢谢,但是,很抱歉忘记提及房间对象无法更改。它已经在其他地方使用了。@RobertSmith,但你还是可以重复使用它,是吗?从另一个问题复制答案并不是很有建设性。复制粘贴答案的目的是什么,而不是编写自己的答案或指向该答案?谢谢,但是,有没有一种不使用Object.prototype的简单的2行或3行解决方案呢?您只需在对象上编写一个for循环,检查它是否具有OwnProperty并返回值。(更新答案)您需要检查
房间。hasOwnProperty(键)
以确保您访问的对象属性正确。Zee,谢谢,这正是我要找的@罗伯茨·史密斯。忘了那部分,更新了谢谢:)罗伯特很好:)