使用javascript数组中的空对象
Working with empty objects in javascript array
我有一个数组,我正试图从中提取值。问题是,当它碰到一个空数组时,我会得到一个未定义的错误。
这是我正在使用的阵列:
data = [[Object { myvar=null}], [Object { myvar="testval"}], [], [], []]
以下是我用来获取所有myvar值的javascript:
myarr = [];
for (var i = 0; i < data.length; i++) {
console.log(data[i][0].myvar);
if (data[i][0].myvar) {
dep = data[i][0].myvar;
if (dep != null) {
myarr.push(dep);
}
}
}
console.log看起来像:
null
testval
Error: data[i][0] is undefined
因此,当它到达第一个[]时,它就会断裂。如何删除for循环之前的所有空数组?或者for循环在命中空数组时没有死亡?感谢您的帮助。谢谢
您可以简单地检查当前项目是否为空:
if (data[i].length === 0) continue;
我只是想把它作为一个答案。。在javascript中,我相信null == false
。所以你也可以这样做:
if(data[i][0])
//it's not null or undefined, do some work
您需要确保data[i]是一个数组,并且它首先至少有一个项:
var i, item, myarr = [],
isNotEmptyArray = function(a) {
return Object.prototype.toString.call(a) === '[object Array]' && a.length > 0;
};
for (i = 0; i < data.length; i++) {
item = data[i];
if (isNotEmptyArray(item) && item[0].myvar) {
console.log(item[0].myvar);
dep = item[0].myvar;
if (dep != null) {
myarr.push(dep);
}
}
}
for (var i = 0; i < data.length; i++) {
if (data[i].length !== 0) continue;
if (data[i][0].myvar) {
dep = data[i][0].myvar;
if (dep != null) {
myarr.push(dep);
}
}
}
这是最好、最干净的方法。
data.forEach(function(e){
if(Object.keys(e).length) myarr.push(e);
});
看看http://jsfiddle.net/8zfZd/打开控制台查看对象。
Object.keys()
对于每个
让它更短。。。
data.forEach(function(e){ (e[0]) && myarr.push(e); });
http://jsfiddle.net/cgg6j/
在循环之前添加此循环以清除空数组:
var i = 0;
while (true) {
if (i == data.length)
break;
if (data[i].length == 0)
data.splice(i, 1);
else
++i;
}
相关文章:
- 面向对象JavaScript中的私有函数
- 对象 Javascript 中的标签无效 - 想要添加事件列表器
- 将字符串转换为对象 javascript/jquery
- 正在检查对象javascript中是否存在嵌套属性
- 时间-日期对象JavaScript getUTCMilliseconds
- 仅在对象(javascript)中解析值
- 使用对象(JavaScript或jQuery)填充选择下拉列表
- 引用另一个对象javascript中的对象
- 如何删除列表中的对象?Javascript nodejs和下划线
- 无法从日期对象javascript获取日期和月份
- 如何在if语句中使用对象-Javascript
- 对象javascript错误
- 对象Javascript的少数实例
- 位置对象Javascript
- 将字符串传递到对象javascript中
- 获取对象Javascript或jQuery的最后一个值
- 鼠标接近对象Javascript
- 这个mixins代码是书中的错误吗;面向对象JavaScript的原理”;
- 使用闭包编译器编写更好的面向对象JavaScript完整示例代码
- 访问对象javascript数组中的对象属性值