javascript - 检查对象是否为空

时间:2017-03-15 15:15:39

标签: javascript json

我正在尝试创建javascript / jquery测试以检查我的对象是否为空并且无法弄明白。

当它有内容时,这是对象:

{"mergedSellerArray":{"key1114":"1120"}}

以下是空的对象:

{"mergedSellerArray":{}}

这是我根据另一个SO答案进行的当前测试,但它不起作用:

var sellers = JSON.stringify({mergedSellerArray});
if(Object.keys(sellers).length === 0 && sellers.constructor === Object) {
    console.log("sellers is empty!");
}

6 个答案:

答案 0 :(得分:30)

您正在测试sellers,它不是空的,因为它包含mergedSellerArray。您需要测试sellers.mergedSellerArray



let sellers = {
  "mergedSellerArray": {}
};
if (Object.keys(sellers.mergedSellerArray).length === 0 && sellers.mergedSellerArray.constructor === Object) {
  console.log("sellers is empty!");
} else {
  console.log("sellers is not empty !");
}




答案 1 :(得分:3)

这是jQuery:

$(document).ready(function(){
	var obj={"mergedSellerArray":{}};
	alert("is empty: "+$.isEmptyObject(obj.mergedSellerArray));

        var obj2={"mergedSellerArray":{"key1114":"1120"}};
	alert("is empty: "+$.isEmptyObject(obj2.mergedSellerArray));
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

jsfidle:https://jsfiddle.net/nyqgbp38/

答案 2 :(得分:1)

如果使用lodash库,则有一种优雅的方法来检查空对象,数组,映射或集合。 我想您知道ES6 Import语句。

import {isEmpty} from "lodash"

let obj = {};
console.log(isEmpty(obj)); //Outputs true.

let arr = [];
console.log(isEmpty(arr)); //Outputs true.

obj.name="javascript";
console.log(isEmpty(obj)); //Outputs false.

因此,对于您的代码,

isEmpty(mergedSellerArray); //will return true if object is not empty.

希望这个答案有所帮助。

答案 3 :(得分:1)

可以创建助手功能:

const isEmpty = inputObject => {
  return Object.keys(inputObject).length === 0;
};

可以像这样使用它:

let inputObject = {};
console.log(isEmpty(inputObject))  // true.

inputObject = {name: "xyz"}; 
console.log(isEmpty(inputObject)) // false

答案 4 :(得分:1)

这将适用于现代网络浏览器。 非常简单和简单

const empty = {};
if(Object.keys(empty).length === 0 && empty.constructor === Object) {
    console.log("Object is empty");
} else {
    console.log("Object is not empty");
}

答案 5 :(得分:0)

或者,您可以在对象原型上编写isEmpty函数。

Object.prototype.isEmpty = function() {
    for(var key in this) {
        if(this.hasOwnProperty(key))
            return false;
    }
    return true;
}

然后您可以轻松地检查对象是否为空。

var myObj = {
    myKey: "Some Value"
}

if(myObj.isEmpty()) {
    // Object is empty
} else {
    // Object is NOT empty (would return false in this example)
}

源解决方案:https://coderwall.com/p/_g3x9q/how-to-check-if-javascript-object-is-empty