![](/img/trans.png)
[英]How to remove a property from an object and/or array if the value is null, undefined or empty?
[英]How to remove undefined property from object?
我有這個對象:
this.prepaidObject = {
'customerType' : this.prepaidDetailForm.prepaidDetails.customerType,
'firstName' : this.prepaidDetailForm.prepaidDetails.firstName,
'lastName' : this.prepaidDetailForm.prepaidDetails.lastName,
'note' : this.prepaidDetailForm.prepaidDetails.note,
'created': this.prepaidDetailForm.prepaidDetails.created
};
現在有時某些屬性是未定義的。 我想要的是如果this.prepaidDetailForm.prepaidDetails
屬性之一未定義不顯示它們。 因此,例如,如果this.prepaidDetailForm.prepaidDetails.firsName
未定義,我不需要創建'firstName'
屬性 isside 對象。 任何建議我該怎么做?
檢查您的對象:
for( var m in this.prepaidObject ) {
if ( this.prepaidObject[m] == undefined ) {
delete this.prepaidObject[m];
}
}
執行此操作的最短方法是在stringify
之后parse
它。
確切的語法:
let prepaidObjectNew = JSON.parse(JSON.stringify(prepaidObject))
示例
之前:
var prepaidObject = {
'customerType' : 'TestCustType',
'firstName' : "sample FirstName",
'lastName' : "sample LastName",
'note' : undefined
};
后:
{
'customerType' : 'TestCustType',
'firstName' : "sample FirstName",
'lastName' : "sample LastName"
};
一種方法是遍歷鍵並只附加定義的鍵:
this.prepaidObject = { };
Object.keys(this.prepaidDetailForm.prepaidDetails)
.forEach(function(key) {
var val = this.prepaidDetailForm.prepaidDetails[key];
if (val !== undefined) {
this.prepaidObject[key] = val;
}
});
這是假設在鍵prepaidObject
是一樣prepaidDetails
和所有的人都跟着你提到的同樣的規則。
特別是如果您使用的是 ES6,您可以使用map
和reduce
使其更加優雅,如下所示:
this.prepaidObject = Object.keys(this.prepaidDetailForm.prepaidDetails)
.map(key => ({key, val: this.prepaidDetailForm.prepaidDetails[key]}))
.reduce((obj, {key, val}) => {
if (val !== undefined) {
obj[key] = val;
}
return obj;
}, {});
還有一種使用更多 ES6 特性的更簡潔的方法:
this.prepaidObject = Object.keys(this.prepaidDetailForm.prepaidDetails)
.map(key => ({key, val: this.prepaidDetailForm.prepaidDetails[key]}))
.filter(({_, val}) => val !== undefined)
.reduce((obj, {key, val}) => Object.assign(obj, { [key]: val }), {});
您可能需要檢查類型。
(typeof(this.prepaidDetailForm.prepaidDetails.firsName) != "undefined") ? this.prepaidDetailForm.prepaidDetails.firsName : ''
它基本上是:
var firstName = '';
if(typeof(this.prepaidDetailForm.prepaidDetails.firsName) != "undefined")
firstName = this.prepaidDetailForm.prepaidDetails.firsName;
請嘗試以下操作:
for (var propName in this.prepaidObject) {
if (this.prepaidObject[propName] === undefined) {
delete this.prepaidObject[propName];
}
}
並查看以下答案: Remove blank attributes from an Object in Javascript
this.prepaidObject = {};
for (var i in this.prepaidDetailForm.prepaidDetails) {
if (typeof(this.prepaidDetailForm.prepaidDetails[i]) !== 'undefined') {
this.prepaidObject[i] = this.prepaidDetailForm.prepaidDetails[i];
}
}
如果您還想排除空值和未定義,請將條件更改為:
if (this.prepaidDetailForm.prepaidDetails[i] != null)
不是雙 ==。 因為null == undefined
但null !== undefined
假設你有一個像下面這樣的對象,
var prepaidObject = {
'customerType' : 'TestCustType',
'firstName' : "sample FirstName",
'lastName' : "sample LastName",
'note' : undefined
};
您可以使用 JSON.parse 和 JSON.stringify 方法刪除 undefined,
JSON.parse(JSON.stringify(prepaidObject));
console.log(prepaidObject)
輸出將是,
{
'customerType' : 'TestCustType',
'firstName' : "sample FirstName",
'lastName' : "sample LastName"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.