如何拼接's对象的空属性到数组中
How to splice an empty property of an object that's into an array?
我有一个对象数组,我想在对象为空时对其属性进行切片。
例如:var quotes = [
{
quote: "Bolshevism is not a policy; it is a disease. It is not a creed; it is a pestilence.",
source: "Winston Churchill",
citation: "",
year: "29 May 1919",
place: ""
},
{
quote: "Learn while you live",
source: "",
citation: "X",
year: "1950",
place: ""
}];
我有一个这样的对象列表,对象名称随机为空。
我想只打印非空的属性到页面。
所以我试着循环遍历对象找到indexOf()空属性并拼接它:
function findEmptyProp(quotes) {
for (prop in quotes) {
if(quotes[i].children === '') {
return indexOf(quotes[i]);
quotes.splice(i, 1);
}}}
谢谢你的帮助
splice用于数组,但当您处理对象时,您必须使用delete
。
你可以尝试这样做:
var quotes = [{
quote: "Bolshevism is not a policy; it is a disease. It is not a creed; it is a pestilence.",
source: "Wyston Churchill",
citation: "",
year: "29 May 1919",
place: ""
}, {
quote: "Learn while you live",
source: "",
citation: "X",
year: "1950",
place: ""
}];
quotes.forEach(function(o){
for (var k in o){
if(o.hasOwnProperty(k) && isEmpty(o[k])){
delete o[k];
}
}
});
function isEmpty(val){
return val === undefined ||
val === null ||
(typeof(val) === "object" && Object.keys(val).length === 0) ||
(typeof(val) === "string" && val.trim().length === 0)
}
console.log(quotes)
正如deze所评论的,我增加了对其他情况的处理,其中value可以被认为是空的。此外,您应该检查hasOwnProperty
更新自己的属性。
供参考:使用Object.keys(obj)
返回一个数组,毫不奇怪,一个对象的键。例如…
var arrayOfObjects = [
{
prop1: '1',
prop2: '2',
prop3: ''
},
{
prop1: '1',
prop2: '',
prop3: '3'
},
{
prop1: '',
prop2: '2',
prop3: '3'
}
];
arrayOfObjects.forEach(function(obj) {
/* 'obj' = each object in 'arrayOfObjects' */
Object.keys(obj).forEach(function(key) {
/* 'key' = each key in 'obj' */
if (obj[key] === '') delete obj[key];
});
});
/* test arrayOfObjects */
arrayOfObjects.forEach(function(obj) {
console.debug(obj);
});
/** =>
Object { prop1: "1", prop2: "2" }
Object { prop1: "1", prop3: "3" }
Object { prop2: "2", prop3: "3" }
**/
在对象上使用像.forEach()
, .filter()
, .sort()
, .reduce()
, .map()
等数组函数真的很方便。
相关文章:
- 如何从对象的原型方法访问JavaScript对象属性
- 如何将数组项添加到对象属性中
- 设置嵌套对象属性的更好方法
- JavaScript管理具有重复属性名称的对象属性
- 如何使用element.myobj.prop等具有对象属性的元素
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- Es6:能够在设置/更新/删除对象属性时调用自定义方法
- 如何在AngularJS工厂中正确声明对象属性
- 如何使用object.assign()从其他对象引用基本对象属性
- 使用XPath样式访问Javascript JSON对象属性
- 将javascript对象(属性+值)合并到一个对象中
- 数组:使对象属性成为数组键
- 无法从JavaScript中的函数调用对象属性
- Google Closure Advanced |无法识别对象属性|动态属性
- Javascript从匿名函数访问外部对象属性
- 从函数更改对象属性
- 如何从字符串变量访问对象属性
- 从嵌套对象属性中获取排除某个值的最高值
- 在Aurelia computeds中,当设置依赖关系时,如何声明对对象属性的依赖关系
- 传递数量不确定的可能嵌套的对象属性