[英]how do i delete array property from an object
我想刪除屬性period_to
和period_from
但是如果我使用delete.period_to或delete.period_to[0]
它不會刪除。
function someData(data)
{
var formkey = [];
var formval = [];
var ch = data;
var clen = ch.length;
for(var i =0; i < clen; i++){
formkey.push(ch[i].name);
formval.push(ch[i].value);
}
var result = {};
formkey.forEach((key, i) => result[key] = formval[i]);
delete result.table;
delete result.redirect_to;
delete result.dbres;
delete result.period_to;
delete result.period_from;
//console.log(result);
//
return result;
}
-Chrome控制台
{name: "qwerty", client_id: "1", user_id: "1", period_from[2]: "11", period_from[1]: "01", …}
client_id: "1"
name: "qwerty"
period_from[0]: "11"
period_from[1]: "01"
period_from[2]: "11"
period_to[0]: "111"
period_to[1]: "09"
period_to[2]: "11"
user_id: "1"
__proto__: Object
很少觀察到:
如果您的obj如OP
-- chrome console
部分所述。 然后,您應該刪除具有確切名稱的對象屬性。
演示
var obj = { "client_id": "1", "name": "qwerty", "period_from[0]": "11", "period_from[1]": "01", "period_from[2]": "11", "period_to[0]": "111", "period_to[1]": "09", "period_to[2]": "11", "user_id": "1" }; delete obj["period_to[0]"]; delete obj["period_from[0]"]; console.log(obj);
如果您的對象是這樣的:
var obj = { "client_id": "1", "name": "qwerty", "period_from": ["11","01","11"], "period_to[0]": ["111","09","11"], "user_id": "1" };
然后嘗試下面的代碼:
var obj = { "client_id": "1", "name": "qwerty", "period_from": ["11","01","11"], "period_to": ["111","09","11"], "user_id": "1" }; delete obj.period_to; delete obj.period_from; console.log(obj);
刪除是一個運算符,而不是一個函數。 刪除句號並替換為空格。
delete data.period_to
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/delete
例如,如果要刪除period_from[2]
,則必須在鍵名周圍加上引號,因為該鍵名當前無效。 然后,您可以使用方括號表示法刪除該屬性。
const obj = { name: "qwerty", client_id: "1", user_id: "1", "period_from[2]": "11", "period_from[1]": "01" } delete obj['period_from[2]']; console.log(obj)
您可以將其第一部分縮減為單個reduce函數,這應該使其更具可讀性並且更易於排除故障。
另外,也可以先測試屬性,然后僅添加所需的屬性,而不是嘗試在以后進行大量刪除。
var propRgx = /^(table|redirect_to|dbres|period_to|period_from)/ function allowProperty(prop){ return !propRgx.test(prop) //if the property matches any of those, return false } function someData(data) { //All of the assignment can be replaced with this reduce, and instead of deleting afterward, you can test the properties inside of here: var result = data.reduce(function(obj, t){ if(allowProperty(t.name)) obj[t.name] = t.value return obj }, {}) return result; }
您可以使用rest
和destructuring
:
var obj = {name: "1", client_id: "1", user_id: "1", period_from: [], period_to: []}; var period_to, period_from; ({period_to, period_from, ...obj} = obj); console.log(obj);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.