Jika saya memiliki JS objek seperti:
var foo = { 'bar' : 'baz' }
Jika aku tahu bahwa foo
memiliki dasar kunci/nilai struktur, tapi don't tahu nama kunci, apa yang's cara termudah untuk mendapatkannya? untuk ... di
? $.masing-masing()
? Saya berharap ada's sesuatu yang lebih baik....
Anda akan iterate dalam objek dengan untuk loop:
for(var i in foo){
alert(i); // alerts key
alert(foo[i]); //alerts key's value
}
Atau
Object.keys(foo)
.forEach(function eachKey(key) {
alert(key); // alerts key
alert(foo[key]); // alerts value
});
Jika anda ingin mendapatkan semua kunci, ECMAScript 5 diperkenalkan Objek.tombol
. Ini hanya didukung oleh browser yang lebih baru tetapi MDC dokumentasi memberikan alternatif implementasi (yang juga menggunakan untuk...di
btw):
if(!Object.keys) Object.keys = function(o){
if (o !== Object(o))
throw new TypeError('Object.keys called on non-object');
var ret=[],p;
for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
return ret;
}
Tentu saja jika anda ingin investasi, kunci dan nilai, maka untuk...di
adalah satu-satunya solusi yang masuk akal.
A salah satu kapal untuk anda:
const OBJECT = {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3',
'key4': 'value4'
};
const value = 'value2';
const key = Object.keys(OBJECT)[Object.values(OBJECT).indexOf(value)];
window.console.log(key); // = key2
Ini adalah yang paling sederhana dan cara yang mudah. Ini adalah bagaimana kita melakukan hal ini.
var obj = { 'bar' : 'baz' }
var key = Object.keys(obj)[0];
var value = obj[key];
console.log("key = ", key) // bar
console.log("value = ", value) // baz
Saya sedang mengalami masalah yang sama dan ini adalah apa yang bekerja
//example of an Object
var person = {
firstName:"John",
lastName:"Doe",
age:50,
eyeColor:"blue"
};
//How to access a single key or value
var key = Object.keys(person)[0];
var value = person.firstName;
Cara termudah adalah dengan hanya menggunakan Underscore.js:
kunci
_.kunci-kunci(objek) Mengambil semua nama-nama benda's properties.
_.kunci-kunci({one : 1, dua : 2, tiga : 3}); => ["", "dua", "tiga"]
Ya, anda perlu ekstra perpustakaan, tapi itu's begitu mudah!
Objek.kunci-kunci() Objek.kunci-kunci() method ini mengembalikan sebuah array dari objek yang diberikan's sendiri enumerable sifat, dalam urutan yang sama seperti yang disediakan oleh untuk...dalam loop (perbedaan adalah bahwa yang di loop menyebutkan sifat dalam prototipe jaringan).
var arr1 = Object.keys(obj);
Objek.nilai-nilai() Objek.nilai-nilai() method ini mengembalikan sebuah array dari objek yang diberikan's sendiri enumerable nilai properti, dalam urutan yang sama seperti yang disediakan oleh untuk...dalam loop (perbedaan adalah bahwa yang di loop menyebutkan sifat dalam prototipe jaringan).
var arr2 = Object.values(obj);
Untuk lebih lanjut silahkan kunjungi di sini
Karena anda menyebutkan $.masing-masing()
, di sini's yang berguna pendekatan yang akan bekerja di jQuery 1.6+:
var foo = { key1: 'bar', key2: 'baz' };
// keys will be: ['key1', 'key2']
var keys = $.map(foo, function(item, key) {
return key;
});
Tidak ada cara lain selain untuk ... dalam
. Jika anda don't ingin menggunakan itu (parhaps karena itu's marginal yang tidak efisien harus uji hasOwnProperty
pada setiap iterasi?) kemudian gunakan berbeda membangun, misalnya array kvp's:
[{ key: 'key', value: 'value'}, ...]
penggunaan untuk masing-masing loop untuk mengakses tombol-tombol pada Objek atau Peta dalam javascript
for(key in foo){
console.log(key);//for key name in your case it will be bar
console.log(foo[key]);// for key value in your case it will be baz
}
Catatan: anda juga dapat menggunakan
Objek.kunci-kunci(foo);
ini akan memberi anda seperti ini output:
[bar];