可能是这个问题的重复.
愚蠢的javascript问题:我想检查对象是否是emtpy对象.
我将空对象称为使用空对象文字产生的对象,如下所示:
var o = {};
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,既不是==也===不起作用,如以下两个陈述
alert({}=={});
alert({}==={});
Run Code Online (Sandbox Code Playgroud)
假的.
不评估空对象的表达式示例:
0""{a:"b"}[]new function(){}那么评估空物体的最短方法是什么?
我正在学习 JavaScript。我无法理解一个空物体的概念。据我了解,有些情况下我需要检查一个变量是否包含一个对象并有一个值。
到目前为止,我知道一个变量可以是undefined。
var car; // the value is undefined, as well as the type (which is it? number, array, etc.)
Run Code Online (Sandbox Code Playgroud)
我也知道,所有有价值的东西都是真实的:
var car = "Opel";
Boolean(car); // true
Run Code Online (Sandbox Code Playgroud)
任何没有价值的东西都是假的:
var car = ""; // typeof string, but it is empty, so
Boolean(car); // false
Boolean(null); // false
Run Code Online (Sandbox Code Playgroud)
那么为什么它与数组和对象的工作方式不同呢?为什么这一切都是真的?空数组和对象不应该返回false吗?
var car = {make: "Opel", year: 2015};
Boolean(car); // true
car = {};
Boolean(car); // true
car = ["BMW", "Opel"];
Boolean(car); // true …Run Code Online (Sandbox Code Playgroud) 你好,我有一个对象:
var equippedItems = {
weapon: {},
armor: {},
accessory: {}
};
Run Code Online (Sandbox Code Playgroud)
我需要一种方法来检查 allowedItems.weapon 是否''在某个时候等于我正在做的事情equippedItems.weapon = '';我不知道它是否与上面的对象完全相同。我已经尝试过使用,object.hasOwnProperty但equippedItems.weapon在这种情况下似乎无法使用,也许我做错了什么?另请注意,我确实阅读了如何检查对象是否已经为空,但它不适用于对象内的对象。
@编辑:
就像我说的,我已经读过那些,他们没有直接回答我的问题,他们确实回答了如何检查对象是否为空,但是对象就像object = {};我的一样
object = {
object:{},
object2:{},
object3:{}};
这就是为什么它让我感到困惑。
如果我有一个像 [{a:'b'},{}] 这样的数组,并且我试图找到元素 {} 的索引。然后我无法获得正确的索引。
我已经尝试过 indexOf、findIndex 和 lodash 的 findIndex 但都返回 -1 而不是 1 可能是因为引用。
实际索引应该是 1 而不是 -1。
var abc = {};
console.log(abc=={}) //false, why?
Run Code Online (Sandbox Code Playgroud)
为什么是假的?如何匹配空白哈希图...?
有没有更好的方法来检查对象是否为空?我正在使用这个:
function isObjEmpty(obj)
{
for (var p in obj) return false;
return true;
}
Run Code Online (Sandbox Code Playgroud) 这与我一直试图做的类似,
var obj = {};
if(obj){
//do something
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是当对象为空时条件应该失败.
我尝试使用JSON.stringify(obj),但它仍然有花括号('{}').
我使用 Jquery 检查来自 ajax 调用的对象是否为空。
在这个例子中,我做了一个正确的 AJAX 调用,它返回了一些数据。
console.log ("obj before Json parse: ",response);
var test = $.isEmptyObject(response);
console.log("test if object is empty:",test);
obj before Json parse: [{"dateTime":"2015-10-02","entries":220}]
est if object is empty: false
Run Code Online (Sandbox Code Playgroud)
然而,在这个例子中,我做了一个不返回任何内容的不正确的 AJAX 调用。
console.log ("obj before Json parse: ",response);
var test = $.isEmptyObject(response);
console.log("test if object is empty:",test);
obj before Json parse: []
test if object is empty: false
Run Code Online (Sandbox Code Playgroud)
在这种情况下,由于对象为空,测试变量肯定应该为真吗?
我今天遇到了这个案子
if ({}) {
// This is returned as empty object is true
}
Run Code Online (Sandbox Code Playgroud)
因此需要找出一种{}假的方法,试着调用.length我传递给if语句的对象,但这不起作用.
在浏览器控制台中查看时,JSON响应为空时如下所示:
{"data":{},"status":200,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","url":"http://url/form/BN217473","headers":{"Accept":"application/json, text/plain, */*"}},"statusText":"","xhrStatus":"complete"}
Run Code Online (Sandbox Code Playgroud)
在角度脚本中,我正在检查响应是否为空,但由于从未执行逻辑块,因此检查未捕获到空响应
if (response.data == '') {
console.log("no data found");
}
Run Code Online (Sandbox Code Playgroud)
如何检查我的回复不为空?
javascript ×10
object ×4
angularjs ×2
jquery ×2
json ×2
arrays ×1
html ×1
if-statement ×1
null ×1
undefined ×1