Tôi không khuyên bạn nên sử dụng Object.keys vì nó không được hỗ trợ trong các phiên bản IE cũ. Nhưng nếu bạn thực sự cần điều đó, bạn có thể sử dụng mã ở trên để đảm bảo khả năng tương thích trở lại:
if (!Object.keys) {
Object.keys = (function () {
var hasOwnProperty = Object.prototype.hasOwnProperty,
hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
dontEnums = [
'toString',
'toLocaleString',
'valueOf',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'constructor'
],
dontEnumsLength = dontEnums.length;
return function (obj) {
if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object');
var result = [];
for (var prop in obj) {
if (hasOwnProperty.call(obj, prop)) result.push(prop);
}
if (hasDontEnumBug) {
for (var i=0; i < dontEnumsLength; i++) {
if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i]);
}
}
return result;
}})()};
Tính năng Firefox (Tắc kè) 4 (2.0) Chrome 5 Internet Explorer 9 Opera 12 Safari 5
Thông tin thêm: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/keys
Nhưng nếu bạn chỉ cần cái đầu tiên, chúng tôi có thể sắp xếp một giải pháp ngắn hơn như:
var data = {"key1":"123","key2":"456"};
var first = {};
for(key in data){
if(data.hasOwnProperty(key)){
first.key = key;
first.content = data[key];
break;
}
}
console.log(first); // {key:"key",content:"123"}