简体   繁体   English

获取数组键的名称

[英]get name of array key

I have a JSON like this: 我有一个像这样的JSON:

{
        "myName":{
                 "forename":"alf",
                 "surname":"cool",
                 "phone":"000000000000",
                 "email":"mail@com"
},.....

My code where I can access each key 我可以访问每个键的代码

 for (var key in contacts) {
                          if (contacts.hasOwnProperty(key)) {
                                var newRow = new Element('li');
                                newRow.addClass('contact');
                                newRow.set('html', contacts[key].forename + ' ' + contacts[key].surname);

                                var innerSpan = new Element('span').set('html', contacts[key].phone + ', ' + contacts[key].email);
                                innerSpan.addClass('details');
                                innerSpan.set('html', contacts[key].phone + ', ' + contacts[key].email);
                                innerSpan.inject(newRow);

                                newRow.addEvent("click", this.setFromContact.bind(this, contacts[key]));
                                newRow.inject($(this.list));
                               // save myName to a variale here!!

                          }
                 }

Now I want to save "myName" to a variable. 现在,我想将“ myName”保存到变量中。

Also, MooTools and ES5 provide Object.keys 另外,MooTools和ES5提供了Object.keys

var obj = {
    myName: { }
    yourName: { }
};

console.log(Object.keys(obj)); // ['myName', 'yourName']; 

I would also advise you to use Object.each(obj, fn(value, key, obj){}) for iterator. 我还建议您将Object.each(obj, fn(value, key, obj){})用于迭代器。 see http://mootools.net/core/docs/1.5.1/Types/Object#Object:Object-each 参见http://mootools.net/core/docs/1.5.1/Types/Object#Object:Object-each

it gives you a closure so variables are not re-declared and dont interfere with each other. 它给您一个闭包,这样就不会重新声明变量并且不会互相干扰。

var keys = [];
Object.each(contacts, function(value, key){
    var newRow = new Element('li.contact').set('html', '{forename} {surname}'.substitute(value)),
        innerSpan = new Element('span.details').set('html', '{phone}, {email}'.substitute(value)).inject(newRow);

    newRow.addEvent("click", this.setFromContact.bind(this, value)).inject($(this.list));
    keys.push(key); // avoids extra Object.keys call
}, this);

You can test the value of the keys and if the value is "myName" you can save it into a variable. 您可以测试键的值,如果值是“ myName”,则可以将其保存到变量中。

var myName = '';
for (var key in contacts) {
    if(key == "myName")
        myName = key;
}
// Variable with the "myName" object    
var myVariable = contacts[key];

key variable is a string, such as "myName" 变量是一个字符串,例如“ myName”

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM