Saya punya objek JavaScript
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
Bagaimana saya bisa mendapatkan panjang dan daftar kunci di objek ini?
Saya punya objek JavaScript
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
Bagaimana saya bisa mendapatkan panjang dan daftar kunci di objek ini?
Jawaban:
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
};
var keys = [];
for (var k in obj) keys.push(k);
alert("total " + keys.length + " keys: " + keys);
keys
.
Object.prototype
, yang seharusnya tidak Anda lakukan. Namun, untuk konstruktor khusus, Anda benar.
[]
(atau array()
saat itu) membuatnya menjadi array, yang kemudian dapat Anda gunakan sebagai array dengan aman.
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
var keys = Object.keys(obj);
console.log('obj contains ' + keys.length + ' keys: '+ keys);
Ini didukung di sebagian besar browser utama sekarang.
for(key in ob)
! Object.keys
tidak akan mendaftar kunci dari prototipe, tetapi .. in obj
tidak.
Underscore.js membuat transformasi cukup bersih:
var keys = _.map(x, function(v, k) { return k; });
Sunting: Saya rindu Anda dapat melakukan ini juga:
var keys = _.keys(x);
Jika Anda hanya ingin kunci yang spesifik untuk objek tertentu dan bukan prototype
properti turunan apa pun :
function getKeys(obj) {
var r = []
for (var k in obj) {
if (!obj.hasOwnProperty(k))
continue
r.push(k)
}
return r
}
misalnya:
var keys = getKeys({'eggs': null, 'spam': true})
var length = keys.length // access the `length` property as usual for arrays
var keys = new Array();
for(var key in obj)
{
keys[keys.length] = key;
}
var keyLength = keys.length;
untuk mengakses nilai apa pun dari objek, Anda dapat menggunakan objek [kunci];
keys.length
, yang berbeda untuk setiap iterasi karena setiap iterasi memasukkan nilai.
Jawaban Anurags pada dasarnya benar. Tetapi untuk mendukung Object.keys(obj)
di browser lama juga Anda dapat menggunakan kode di bawah ini yang disalin dari
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
. Ini menambahkan Object.keys(obj)
metode jika tidak tersedia dari browser.
if (!Object.keys) {
Object.keys = (function() {
'use strict';
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 = [], prop, i;
for (prop in obj) {
if (hasOwnProperty.call(obj, prop)) {
result.push(prop);
}
}
if (hasDontEnumBug) {
for (i = 0; i < dontEnumsLength; i++) {
if (hasOwnProperty.call(obj, dontEnums[i])) {
result.push(dontEnums[i]);
}
}
}
return result;
};
}());
}
Solusi rekursif untuk browser yang mendukung ECMAScript 5:
var getObjectKeys = function(obj) {
var keys = Object.keys(obj);
var length = keys.length;
if (length !== 0) {
for (var i = 0; i < length; i++) {
if (typeof obj[keys[i]] === 'object') {
keys[keys[i]] = getObjectKeys(obj[keys[i]]);
}
}
}
return keys;
};
Gunakan Object.keys()
... itu cara untuk pergi.
Dokumentasi lengkap tersedia di situs MDN yang tertaut di bawah:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
Jika Anda memutuskan untuk menggunakan Underscore.js sebaiknya Anda lakukan
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
var keys = [];
_.each( obj, function( val, key ) {
keys.push(key);
});
console.log(keys.lenth, keys);
Dalam JavaScript, objek adalah entitas mandiri, dengan properti dan tipe.
Untuk mengambil nilai dari Object dalam bentuk array: Object .values (obj) // obj adalah nama objek yang Anda gunakan Hasil -> ["value1", "value2", "value3", "value4"]
Untuk mengambil kunci dari Object dalam bentuk array: Object .keys (obj) // obj adalah nama objek yang Anda gunakan Hasil -> ["key1", "key2", "key3", "key4"]
Karena kedua fungsi mengembalikan array, Anda bisa mendapatkan panjang kunci atau nilai dengan menggunakan properti length. Misalnya - Object .values (obj) .length atau Object .key (obj) .length
Menggunakan ES6, Anda dapat menggunakannya forEach
untuk beralih di atas Tombol-tombol Objek. Untuk mendapatkan semua kunci yang bisa Anda gunakan Object.keys
yang mengembalikan semua kunci dalam sebuah Objek
Object.keys(obj).forEach(function(keyValue, index, map) {
console.log(keyValue);
});
Tangan pendek dari cuplikan di atas adalah, yang hanya membutuhkan satu parameter
Object.keys(obj).forEach(function(keyValue) {
console.log(keyValue);
});
if(props.userType){
var data = []
Object.keys(props.userType).map(i=>{
data.push(props.userType[i])
})
setService(data)
}
menggunakan slice, apply and join method.
var print = Array.prototype.slice.apply( obj );
alert('length='+print.length+' list'+print.join());