Setelah permintaan AJAX, kadang-kadang aplikasi saya dapat kembali kosong objek, seperti:
var a = {};
Bagaimana saya bisa memeriksa apakah yang's terjadi?
// because Object.entries(new Date()).length === 0;
// we have to do some additional check
Object.entries(obj).length === 0 && obj.constructor === Object
// because Object.keys(new Date()).length === 0;
// we have to do some additional check
Object.keys(obj).length === 0 && obj.constructor === Object
Pra-ECMA 5:
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop)) {
return false;
}
}
return JSON.stringify(obj) === JSON.stringify({});
}
jQuery.isEmptyObject({}); // true
_.isEmpty({}); // true
_.isEmpty({}); // true
Hoek.deepEqual({}, {}); // true
Ext.Object.isEmpty({}); // true
angular.equals({}, {}); // true
R.isEmpty({}); // true
Ada's tidak ada cara mudah untuk melakukan ini. Anda'll harus loop atas sifat secara eksplisit:
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return true;
}
Jika ECMAScript 5 support tersedia, anda dapat menggunakan Objek.kunci-kunci()
sebagai gantinya:
function isEmpty(obj) {
return Object.keys(obj).length === 0;
}
Bagi anda yang memiliki masalah yang sama tetapi menggunakan jQuery, anda dapat menggunakan jQuery.isEmptyObject.
if(Object.getOwnPropertyNames(obj).length === 0){
//is empty
}
lihat http://bencollier.net/2011/04/javascript-is-an-object-empty/
Pertanyaan lama, tetapi hanya memiliki masalah. Termasuk JQuery adalah tidak benar-benar ide yang baik jika satu-satunya tujuan anda adalah untuk memeriksa jika objek tidak kosong. Sebaliknya, hanya jauh ke JQuery's code, dan anda akan mendapatkan jawaban:
function isEmptyObject(obj) {
var name;
for (name in obj) {
if (obj.hasOwnProperty(name)) {
return false;
}
}
return true;
}
Aku hanya berlari ke dalam situasi yang sama. Aku't ingin menggunakan JQuery, dan ingin melakukan hal ini menggunakan pure Javascript.
Dan apa yang saya lakukan, digunakan kondisi berikut ini, dan itu bekerja untuk saya.
var obj = {};
if(JSON.stringify(obj) === '{}') { //This will check if the object is empty
//Code here..
}
Karena tidak sama, gunakan ini : JSON.stringify(obj) !== '{}'
Check out ini [JSFiddle][1]
Anda bisa memeriksa untuk menghitung Objek kunci:
if (Object.keys(a).length > 0) {
// not empty
}
Misalnya:
var a = {kosong:true};
Kemudian anda dapat dengan mudah memeriksa di AJAX callback code.
jika (a.toSource() === "({})") // maka 'a' kosong
EDIT: Jika anda menggunakan JSON library (f.e. JSON.js) maka anda dapat mencoba JSON.encode() fungsi dan tes hasil terhadap nilai kosong string.
Menggunakan Objek.kunci-kunci(obj).suhu udara (seperti yang disarankan di atas untuk ECMA 5+) adalah 10 kali lebih lambat bagi benda kosong! menjaga dengan lama sekolah (untuk...dalam) pilihan.
Diuji di bawah Node, Chrome, Firefox dan IE 9, menjadi jelas bahwa untuk sebagian besar kasus penggunaan:
Bottom line kinerja bijak, gunakan:
function isEmpty(obj) {
for (var x in obj) { return false; }
return true;
}
atau
function isEmpty(obj) {
for (var x in obj) { if (obj.hasOwnProperty(x)) return false; }
return true;
}
Lihat rinci hasil pengujian dan tes kode di https://stackoverflow.com/questions/4994201/is-object-empty/34491287#34491287
I've dibuat fungsi lengkap untuk menentukan apakah objek kosong.
Menggunakan Objek.tombol
dari ECMAScript 5 (ES5) fungsi jika mungkin untuk mencapai kinerja terbaik (lihat kompatibilitas table) dan fallbacks yang paling kompatibel dengan pendekatan yang lebih tua mesin pencari (browser).
/**
* Returns true if specified object has no properties,
* false otherwise.
*
* @param {object} object
* @returns {boolean}
*/
function isObjectEmpty(object)
{
if ('object' !== typeof object) {
throw new Error('Object must be specified.');
}
if (null === object) {
return true;
}
if ('undefined' !== Object.keys) {
// Using ECMAScript 5 feature.
return (0 === Object.keys(object).length);
} else {
// Using legacy compatibility mode.
for (var key in object) {
if (object.hasOwnProperty(key)) {
return false;
}
}
return true;
}
}
Berikut ini's Inti untuk kode ini.
Dan berikut's [JSFiddle][jsfiddle] dengan demonstrasi dan tes sederhana.
Saya berharap ini akan membantu seseorang. Cheers!
Saya menggunakan ini.
function isObjectEmpty(object)
{
var isEmpty = true;
for(keys in object)
{
isEmpty = false;
break; // exiting since we found that the object is not empty
}
return isEmpty;
}
Misalnya:
var myObject = {}; // Object is empty
var isEmpty = isObjectEmpty(myObject); // will return true;
// populating the object
myObject = {"name":"John Smith","Address":"Kochi, Kerala"};
// check if the object is empty
isEmpty = isObjectEmpty(myObject); // will return false;
Update
ATAU
anda dapat menggunakan jQuery pelaksanaan isEmptyObject
function isEmptyObject ( obj ) {
var name;
for ( name in obj ) {
return false;
}
return true;
}
Contoh berikut menunjukkan bagaimana untuk menguji apakah objek JavaScript kosong, jika kosong berarti kita tidak memiliki sifat sendiri untuk itu.
Script bekerja pada ES6.
const isEmpty = (obj) => {
if (obj === null ||
obj === undefined ||
Array.isArray(obj) ||
typeof obj !== 'object'
) {
return true;
}
return Object.getOwnPropertyNames(obj).length === 0;
};
console.clear();
console.log('-----');
console.log(isEmpty('')); // true
console.log(isEmpty(33)); // true
console.log(isEmpty([])); // true
console.log(isEmpty({})); // true
console.log(isEmpty({ length: 0, custom_property: [] })); // false
console.log('-----');
console.log(isEmpty('Hello')); // true
console.log(isEmpty([1, 2, 3])); // true
console.log(isEmpty({ test: 1 })); // false
console.log(isEmpty({ length: 3, custom_property: [1, 2, 3] })); // false
console.log('-----');
console.log(isEmpty(new Date())); // true
console.log(isEmpty(Infinity)); // true
console.log(isEmpty(null)); // true
console.log(isEmpty(undefined)); // true
per ES2017 spesifikasi di Objek.entri(), cek sederhana menggunakan browser modern--
Object.entries({}).length === 0
jQuery memiliki fungsi khusus isEmptyObject()
untuk kasus ini:
jQuery.isEmptyObject({}) // true
jQuery.isEmptyObject({ foo: "bar" }) // false
Baca lebih lanjut di http://api.jquery.com/jQuery.isEmptyObject/
Di bawah tenda semua kosong memeriksa metode di semua perpustakaan menggunakan objek tombol memeriksa logika. Sebuah cara yang aneh untuk membuat hal itu dapat dimengerti, yang anda dapat dimasukkan ke dalam metode yang Dijelaskan di sini.
for(key in obj){
//your work here.
break;
}
Yang telah berkembang di ES5, sekarang sederhananya anda dapat memeriksa objek's kunci panjang, menggunakan Objek.Tombol
metode yang mengambil objek anda seperti itu's parameter:
if(Object.keys(obj).length > 0){
//do your work here
}
Atau jika anda menggunakan Lodash (anda harus) lalu.
_.isEmpty(obj) //==true or false