删除对象数组中的键并检查其长度
Deleting the keys in an array of object and checking its length
var uniqueProperties = [];
for (var i = 0, length = obj.length; i < length; i++) {
for (var prop in obj[i]) {
if (prop == null || prop == ' ') {
delete obj[i][prop];
}
}
for (var prop in obj[i]) {
if (this.uniqueProperties.indexOf(prop) === -1) {
this.uniqueProperties.push(prop);
}
}
}
我想首先删除null或空白值的键,然后将它们添加到数组中并检查其长度。
在第一个循环中,您正在检查"prop"是否为null或(不正确地)空字符串,但这实际上没有意义。你应该检查"obj[i]"属性的值:
if (obj[i][prop] == null || obj[i][prop] == '')
delete obj[i][prop];
同样,你的"uniqeProperties"列表也应该由一个单独的对象"辅助",这样你就可以避免重复线性扫描的糟糕算法性能:
var uniqueProperties = [], uniqueMap = {};
// ...
for (var prop in obj[i]) {
if (!this.uniqueMap[prop]) {
this.uniqueMap[prop] = true;
uniqueProperties.push(prop);
}
}
为什么要删除密钥....
for (var key in object) {
if (!object.hasOwnProperty(key)) {
continue;
} //to skip inherited properties
if (!key[object]) {
continue;
} //skip null or blank values
}
delete obj[i][propertyName]
是一个不好的编码实践。您不应该直接删除传入数据中的属性,因为这样做的结果有时是不可预测的,并且会在调试阶段引起很多麻烦。
相关文章:
- JS数组-检查对象值是否重复
- 使用js/jQuery检查对象(而不是元素)是否真的存在
- 如何通过json对象选项卡中的Id来检查对象是否存在
- 尝试简化检查对象键是否为true并将其推送到另一个对象
- 检查对象是否是mongo游标
- 检查对象的所有属性是否未定义
- javascript检查对象存在
- Three.js-如何检查对象是否在球体后面(不可见)
- 检查对象是否基于jquery对象
- 正在检查对象javascript中是否存在嵌套属性
- 检查对象是否已被推入数组 Js
- 检查对象数组是否具有所有必需的键
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- 检查对象数组中是否存在名称
- 检查对象数组中的重复项并创建一个新项
- 是否有跨浏览器和跨框架的方法来检查对象是否是HTML元素
- 检查对象是否被推迟
- Javascript:检查对象,如果[condition],则返回x
- Node.js:检查对象中是否缺少属性
- 使用javascript检查对象内的对象是否为空