如果键是字符串,数组显示为空
Array showing empty if key is string?
我在我的代码中设置了一个数组,其中key为string:
var a = new Array();
a[1] = new Array();
a[1]['mystring'] = new Array();
a[1]['mystring'] = 'test';
if(isNullValues(a[1])) {
alert("Array Empty.");
}
function isNullValues(data) {
if (data == undefined || data == null || data.length == 0 || data == "") {
return true;
} else {
return false;
}
}
它提醒我Array Empty
字符串。但它不应该返回这个?
JavaScript中没有关联数组。你所做的是添加一个属性"mystring"的数组在a[1]。因此,内部计数器"length"不会增加,a[1].length == 0
为真,因此"isNullValues()"返回真。
你可以通过使用一个普通对象来"脏修复"这个问题:
var a = new Array();
a[1] = {};
a[1]['mystring'] = 'test';
试试这个:
var a = new Array();
a[1] = new Object();
a[1]['mystring'] = 'test';
if(isNullValues(a[1])) {
alert("Array Empty.");
}
function isNullValues(data) {
if (data == undefined || data == null || data.length == 0 || data == "") {
return true;
} else {
return false;
}
}
我在new Object()
中改变了new Array()
。
您也可以将a
写成var a = [undefined, {mystring: 'test'}];
所示的代码确实应该显示警报,因为:
a[1]['mystring'] = new Array();
简单地向a[1]
中包含的数组添加一个名为mystring
的新属性,这意味着:
a[1].length
…仍然是0,因为没有元素被添加到实际数组中。对于数组中的0个元素,isNullValues
函数返回true,因为检查:
data.length == 0
…
如前所述,您的第一个问题是使用数组而不是对象。现在,如果你想检查一个对象是否为空(没有键),你必须循环它的键:
function isObjectEmpty(obj)
for(var p in obj) {
if(obj.hasOwnProperty(p)) return false;
}
return true;
}
相关文章:
- Jquery/Javascript:通过按下按钮显示数组中的随机图像
- 以angular.js显示数组
- 我想使用Javascript中的循环在HTML中的特定id中显示数组中的多个对象
- Javascript-如何在窗体上方显示数组的值
- 在表中显示数组对象
- 在两个位置显示数组中的随机单词
- 如何显示数组中的图像?JavaScript
- 在页面上显示数组
- 如何使用JavaScript/AngularJS在控制台中显示数组长度
- 流星:显示数组数据,因为表在添加新列时给出了重复值
- 显示数组的内容
- 如何在 JavaScript 中显示数组的所有元素
- jQuery:如何在不使用每个循环的情况下显示数组的第一个元素
- Jquery UI 自动完成中的 PHP 显示数组
- 如何通过单击显示数组和按钮
- ng-重复不显示数组中的值
- 如何在流星中显示数组
- 在输入数组元素时在 html 页面中显示数组元素
- Javascript 如何在新行上显示数组的每个元素
- 显示数组中的图像不起作用