[英]get name of array key
我有一個像這樣的JSON:
{
"myName":{
"forename":"alf",
"surname":"cool",
"phone":"000000000000",
"email":"mail@com"
},.....
我可以訪問每個鍵的代碼
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);
您可以測試鍵的值,如果值是“ myName”,則可以將其保存到變量中。
var myName = '';
for (var key in contacts) {
if(key == "myName")
myName = key;
}
// Variable with the "myName" object
var myVariable = contacts[key];
鍵變量是一個字符串,例如“ myName”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.