javascript - 获取数组键的名称

标签 javascript mootools

我有一个像这样的 JSON:

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

我可以访问每个 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!!

                          }
                 }

现在我想将“myName”保存到变量中。

最佳答案

此外,MooTools 和 ES5 提供了 Object.keys

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

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

我还建议您使用 Object.each(obj, fn(value, key, obj){}) 作为迭代器。请参阅http://mootools.net/core/docs/1.5.1/Types/Object#Object:Object-each

它为您提供了一个闭包,因此变量不会重新声明并且不会相互干扰。

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

关于javascript - 获取数组键的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31286900/

相关文章:

javascript - TypeScript - 获取泛型类参数的类型

javascript - 加载 XML 和 JS 以严格顺序处理它

javascript - 如何在ajax代码中访问javascript变量值

javascript - 在 jQuery 中修改 CSS 变量/自定义属性

javascript - 如何使用mootools在IE8中接收XML

javascript - mootools注入(inject)函数

javascript - Mootools:添加输入文本字段

javascript - 了解 Mootools Assets

javascript - 多少标签对 Google 标签管理器来说太多了?

javascript - 有没有办法在 switch 中使用 OR ?