2015-10-01 46 views
-3

我想根据数组中的第一个值访问对象属性。基于数组值访问对象属性

var LANGS = { 
    "C#": [10, "text/x-csharp", "code"], 
    "C/C++": [7, "text/x-c++src", "code"] 
}; 

所以我希望能够访问其阵列中的10"C#",我会怎么做这个?

+2

这甚至意味着“访问”C#“由其数组中的10 * *”? – Amit

+0

@如果提供了'10',就可以获得钥匙'C#' – Tushar

+1

@Tushar如果你是对的,我会说不这样做。用适当的键设置一个新的“词典”。 – Amit

回答

1

您可以使用for-in遍历对象的属性名称,然后会按顺序使用名称的属性的值,以检查它的第一个元素:

var LANGS = { 
    "C#": [10, "text/x-csharp", "code"], 
    "C/C++": [7, "text/x-c++src", "code"] 
}; 
function getEl(number) { 
    for(var el in LANGS) { 
     if(LANGS[el][0] == number) { 
      return el; 
     } 
    } 
} 
alert(getEl(10)); 

演示:http://jsfiddle.net/Lgp4zazq/

+0

为什么downvote? –

+0

为什么downvote?这就假定找到该属性该怎么做,但是它确实解答了问题:显示如何根据该值找到属性。 –

+0

这里的值是数组,不确定indexOf是否可以作为值在数组上工作... –

0

var LANGS = { 
 
    "C#": ["text/x-csharp", "code",10], 
 
    "C/C++": [7, "text/x-c++src", "code"] 
 
}; 
 
function getEl(number) { 
 
    for(var el in LANGS) { 
 
     debugger 
 
     var array = []; 
 
     array = LANGS[el]; 
 
     
 
     if(array.indexOf(number) > -1) { 
 
      return el; 
 
     } 
 
    } 
 
} 
 
alert(getEl(10));