让myObject={ “ircEvent”:“PRIVMSG”, “方法”:“newURI”, “regex”:“^http://.*” };
让myObject={ “ircEvent”:“PRIVMSG”, “方法”:“newURI” };
删除myObject.regex; //或者, 删除myObject['regex']; //或者, var prop=“regex”; 删除myObject[prop];
var myObject={ “ircEvent”:“PRIVMSG”, “方法”:“newURI”, “regex”:“^http://.*” }; 删除myObject.regex; console.log(myObject);
让myObject={ “ircEvent”:“PRIVMSG”, “方法”:“newURI”, “regex”:“^http://.*” }; //将键regex赋给变量,表示它将不被使用 const{regex:_,…newObj}=myObject; console.log(newObj);// 没有“regex”键 console.log(myObject);// 保持不变
var对象={ 我的属性:1 } console.log(obj.hasOwnProperty('myProperty'))//真 删除obj.myProperty console.log(obj.hasOwnProperty('myProperty'))//错误
常数{a,…rest}={a:1,b:2,c:3};
const myObject={“ircEvent”:“PRIVMSG”,“method”:“newURI”,“regex”:“^http://.*”}; const{regex,…newObject}=myObject; console.log(newObject);
let myObject={“ircEvent”:“PRIVMSG”,“method”:“newURI”,“regex”:“^http://.*”}; ({regex,…myObject}=myObject); console.log(myObject);
var myObject={“ircEvent”:“PRIVMSG”,“method”:“newURI”,“regex”:“^http://.*”}; 删除myObject.regex; console.log(myObject.regex);// 日志:未定义
const-obj={foo:“bar”}; 删除obj.foo; obj.hasOwnProperty(“foo”);// 假
arr;// [0, 1, 2, 3, 4] 棱缝(3,1);// 三 arr;// [0, 1, 2, 4]
让父级={ 成员:{str:“Hello”} }; 让secondref=parent.member; 删除parent.member; 父成员;// 未定义 secondref;// {str:“你好”}
设数组=[0,1,2,3];// [0, 1, 2, 3] 删除数组[2];// [0,1,空,3]
设fauxarray={0:1,1:2,长度:2}; 福萨雷__ 原型=[]__ 原型_; 推(3); 阵列;// [1, 2, 3] Array.isArray(数组);// 假 数组.isArray([1,2,3]);// 真的
让数组=[1,2,3];// [1,2,3] 删除数组[1];// [1,空,3] array.map(x=>0);// [0,空,0]
设a=[0,1,2,3,4] a.splice(2,2)//返回删除的元素[2,3] // ... 现在`a`是[0,1,4]
设a=[0,1,2,3,4] let切片=[ a.切片(0,2), a.切片(2,2), a.切片(2,3), a.切片(2,5)] //a[0,1,2,3,4] //切片[0][0 1]-- //切片[1]---- //切片[2]-[3]-- //切片[3]-[2 4 5]
常量键=“a”; const{[key]:foo,…rest}={a:1,b:2,c:3}; console.log(foo);// 1 console.log(rest);// {b:2,c:3}
删除对象[键];
obj[key]=空; obj[key]=假; obj[key]=未定义;
{[key]:val,…rest}=obj;
var myJSON对象= {“ircEvent”:“PRIVMSG”,“method”:“newURI”,“regex”:“^http://.*”}; _.pick(myJSONObject,“ircEvent”,“method”); =>{“ircEvent”:“PRIVMSG”,“method”:“newURI”};
var myJSON对象= {“ircEvent”:“PRIVMSG”,“method”:“newURI”,“regex”:“^http://.*”}; _.omit(myJSONObject,“regex”); =>{“ircEvent”:“PRIVMSG”,“method”:“newURI”};
_.imit(obj,“键”)
Object.assign(obj,{filters:{sort_by:“”}})
让对象={a:1,b:2,c:3};
const{a,…rest}=对象; 对象=休息;
const propKey='a'; const{[propKey]:propValue,…rest}=对象; 对象=休息;
const removeProperty=(propKey,{[propKey]:propValue,…rest})=>rest; object=removeProperty('a',object);
const removeProperties=(object,…keys)=>(keys.length?removeProproperties(removePropert(keys.pop(),object)。。。 键):对象);
object=removeProperties(object,'a','b')//result=>{c:3}
const propsToRemove=['a','b'] object=removeProperties(object,…propsToRemove)//结果=>{c:3}
myJSONObject={“ircEvent”:“PRIVMSG”,“method”:“newURI”,“regex”:“^http://.*”};
console.log(Object.keys(myJSONObject));
[“ircEvent”,“method”,“regex”]
删除myJSONObject[“regex”];
[“ircEvent”,“方法”]
myJSONObject[“regex”]=空; 删除myJSONObject[“regex”];
var regex=myJSONObject[“regex”];
var myOtherObject={}; myOtherObject[“regex”]=myJSONObject[“regex”];
删除正则表达式// False(错误)
myOtherObject[“regex”]=空; 删除myOtherObject[“regex”];
在删除属性之前将其设置为null无法完成 任何东西(除非对象已被object.seal和 删除失败。 除非你特别指出,否则通常情况并非如此 尝试)。
Reflect.deleteProperty(myJSONObject,“regex”);
删除myJSONObject['regex'];
让obj=Object.freeze({prop:“value”}); let success=Reflect.deleteProperty(obj,“prop”); console.log(成功);// 假 console.log(obj.prop);// 价值
“使用严格”; 让obj=Object.freeze({prop:“value”}); Reflect.deleteProperty(obj,“prop”);// 假 删除对象[“prop”]; //TypeError:属性“prop”不可配置,无法删除
var霍格沃茨={ 工作人员:[ “Argus Filch”, “菲利乌斯·弗利威克”, “Gilderoy Lockhart”, “Minerva McGonagall”, “Poppy Pomfrey”, ... ], 学生:[ “Hannah Abbott”, “凯蒂·贝尔”, “Susan Bones”, “Terry Boot”, “薰衣草棕色”, ... ] };
删除霍格沃茨员工;
删除霍格沃茨['staff'];
霍格沃茨员工拼接(3,1);
霍格沃茨staff.splice(霍格沃兹staff.indexOf(‘米内瓦·麦康纳格尔’)-1);
删除myObject.regex; //或 删除myObject['regex'];
delete操作符从对象中删除给定属性。 在 删除成功,则返回true,否则返回false。 然而,重要的是要考虑以下场景:
如果要删除的属性不存在,请删除 将不起任何作用并返回true
如果对象的原型上存在同名属性 链,则删除后,对象将使用 原型链(换句话说,删除只对自己有影响 属性)。
不能从全局范围中删除任何用var声明的属性 或从函数的作用域。
因此,delete不能删除全局范围内的任何函数(无论这是函数定义的一部分还是函数(表达式)的一部分)。 作为对象的一部分的函数(除了 全局范围)可以使用delete删除。
任何用let或const声明的属性都不能从定义它们的范围中删除。 无法删除非配置属性。 这包括内置对象(如Math、Array、Object)的属性,以及使用Object.defineProperty()等方法创建为不可配置的属性。
var员工={ 年龄:28岁, name:'Alireza', 名称:“开发者” } console.log(删除Employee.name);// 返回true console.log(删除Employee.age);// 返回true //尝试删除符合以下条件的属性时 //不存在,返回true console.log(删除Employee.salary);// 返回true
const myObject={ “ircEvent”:“PRIVMSG”, “方法”:“newURI”, “regex”:“^http://.*”, }; 删除myObject.regex; console.log(myObject);
const myObject={ “ircEvent”:“PRIVMSG”, “方法”:“newURI”, “regex”:“^http://.*”, }; 删除myObject['regex']; console.log(myObject); //或 const name='ircEvent'; 删除myObject[名称]; console.log(myObject);
const myObject={ “ircEvent”:“PRIVMSG”, “方法”:“newURI”, “regex”:“^http://.*”, }; const{regex,…myObjectRest}=myObject; console.log(myObjectRest);
var myObject={ “ircEvent”:“PRIVMSG”, “方法”:“newURI”, “正则表达式”:“^http://.*” }; myObject=Object.keys(myObject).reduce(函数(obj,key){ if(key!=“regex”){//要删除的键 obj[key]=myObject[key]; } 返回对象; }, {}); console.log(myObject);
const myObject={ ircEvent:'PRIVMSG', 方法:“newURI”, 正则表达式:“^http://.*”, }; const myNewObject=对象.keys(myObject).reduce((obj,key)=>{ 键!==' 正则表达式'? obj[key]=myObject[key]:空; 返回对象; }, {}); console.log(myNewObject);
var obj={“属性”:“值”,“属性2”:“数值”}; if(obj&&obj.hasOwnProperty(“属性2”)){ 删除对象属性2; }其他{ //错误处理 }
unset函数(unsetKey、unsetArr、resort){ var tempArr=unsetArr; var unsetArr={}; 删除tempArr[unsetKey]; if(度假){ j=-1; } for(i in tempArr){ if(typeof(tempArr[i])!==' 未定义'){ if(度假){ j++; }其他{ j=i; } unsetArr[j]=tempArr[i]; } } 返回unsetArr; } var unsetArr=['test','deletedString','test2']; console.log(unset('1',unsetArr,true));// 输出对象{0:“测试”,1:“测试2”} console.log(unset('1',unsetArr,false));// 输出对象{0:“test”,2:“test2”}
var myObject={“ircEvent”:“PRIVMSG”,“method”:“newURI”,“regex”:“^http://.*”}; myObject.regex=未定义; myObject=JSON.parse(JSON.stringify(myObject)); console.log(myObject);
从“lodash/省略”导入省略; const-prevObject={test:false,test2:true}; //从上一个对象中删除test2键 const nextObject=省略(prevObject,'test2');
省略(['a','d'],{a:1,b:2,c:3,d:4});//=> {b:2,c:3}
_省略(['a','d'],{a:1,b:2,c:3,d:4});
_省略({a:1,b:2,c:3,d:4},['a','d']);
var deepObjectRemove=函数(obj,path_to_key){ if(路径to_key.length===1){ 删除对象[路径to_key[0]]; 返回true; }其他{ if(对象[路径to_key[0]]) return deepObjectRemove(对象[path_to_key[0]],路径_to_key.slice(1)); 其他的 返回false; } };
变量a={ 级别1:{ 第2级:{ 第3级:{ 级别4:“yolo” } } } }; deepObjectRemove(a,[“level1”,“level2”,“level3”]); 控制台.log(a); //打印{level1:{level2:{}}}
常量对象={ “过滤器”:[ { “FilterType”:“介于”, “字段”:“BasicInformationRow.A0”, “最大值”:“2017-10-01”, “最小值”:“2017-09-01”, “Value”:“过滤值” } ] }; 让new_obj1=Object.assign({},obj.Filters[0]); 让new_obj2=Object.assign({},obj.Filters[0]); /* //旧版本 let shaped_obj1=对象.keys(new_obj1).map( (键,索引)=>{ 开关(钥匙){ 案例“MaxValue”: 删除new_obj1[“最大值”]; 断裂; 案例“MinValue”: 删除new_obj1[“最小值”]; 断裂; } 返回new_obj1; } )[0]; let shaped_obj2=对象.keys(new_obj2).map( (键,索引)=>{ if(键===“值”){ 删除new_obj2[“值”]; } 返回new_obj2; } )[0]; */ //新版本! let shaped_obj1=对象.keys(new_obj1).forEach( (键,索引)=>{ 开关(钥匙){ 案例“MaxValue”: 删除new_obj1[“最大值”]; 断裂; 案例“MinValue”: delete new_obj1[“最小值”]; 断裂; 违约: 断裂; } } ); let shaped_obj2=对象.keys(new_obj2).forEach( (键,索引)=>{ if(键===“值”){ 删除new_obj2[“值”]; } } );
'使用严格' const iLikeMutatingStuffDontI={myNameIs:“KIDDDDD!”,[Symbol.for('amICool')]:true} delete iLikeMuttingStuffDontI[Symbol.for('amICool')]//真 对象.defineProperty({myNameIs:'KIDDDDD!','amICool',{value:true,configurable:false}) delete iLikeMutatingStuffDontI['amICool']//抛出
const foo={名称:'KIDDDDD!',[Symbol.for('isCool')]:true} const{name,…coolio}=foo//coolio没有“name” const{isCool,…coolio2}=foo//coolio2包含来自“foo”的所有内容,因为“isCool”不包含符号:(
'使用严格' const iLikeMutatingStuffDontI={myNameIs:'KIDDDDD!',[Symbol.for('amICool')]:true} Reflect.deleteProperty(iLikeMutatingStuffDontI,Symbol.for('aICool'))//true 对象.defineProperty({myNameIs:'KIDDDDD!','amICool',{value:true,configurable:false}) Reflect.deleteProperty(iLikeMutatingStuffDontI,'amICool')//false
const foo={名称:'KIDDDDD!',[Symbol.for('isCool')]:true} const{name,…coolio}=foo//coolio没有“name” const{isCool,…coolio2}=foo//coolio2包含来自“foo”的所有内容,因为“isCool”不包含符号:(
const o=require(“lodash.imit”) const-foo={[Symbol.for('a')]:'abc',b:'b',c:'c'} const bar=o(foo,'a')//“'a'未定义” const baz=o(foo,[Symbol.for('a'),'b'])//支持符号,一次有多个属性,“Symbol.for('a')undefined”
var iterationsTotal=10000000;// 1000万 变量o; var t1=日期.now(),t2; for(设i=0;i<iterationsTotal;i++){ o={a:1,b:2,c:3,d:4,e:5}; 删除o.a; 删除o.b; 删除o.c; 删除o.d; 删除o.e; } console.log((t2=Date.now())-t1);// 6135 for(设i=0;i<iterationsTotal;i++){ o={a:1,b:2,c:3,d:4,e:5}; o.a=o.b=o.c=o.d=o.e=未定义; } console.log(Date.now()-t2);// 205
让myObject={ “ircEvent”:“PRIVMSG”, “方法”:“newURI”, “正则表达式”:“^http://.*” }; const removeItem='regex'; const{[removeItem]:删除,…rest}=myObject; console.log(删除);// “^http://.*” console.log(rest);// 对象{ircEvent:“PRIVMSG”,方法:“newURI”}
var myObject={ “ircEvent”:“PRIVMSG”, “方法”:“newURI”, “regex”:“^http://.*” }; //第一路和直达路 删除myObject.regex;// 删除myObject[“regex”] console.log(myObject);// {ircEvent:“PRIVMSG”,方法:“newURI”} //2种方式-使用JavaScript的原型概念 Object.prototype.removeFromObjectByKey=函数(键){ //如果键存在,请删除它并返回true if(this[key]!==未定义){ 删除此[密钥] 返回true; } //否则返回false 返回false; } var isRemoved=myObject.removeFromObjectByKey(“方法”) console.log(myObject)//{ircEvent:'PRIVMSG'} //更多示例 var对象={ a: 45岁, b: 第56页, c: 67个 } console.log(obj)//{a:45,b:56,c:67} //从obj中删除键“a” isRemoved=obj.removeFromObjectByKey('a') console.log(isRemoved)// 真的 控制台.log(obj);// {b:56,c:67} //从不存在的obj中删除键“d” var isRemoved=obj.removeFromObjectByKey(d') console.log(已删除);// 假 控制台.log(obj);// {b:56,c:67}
var myObject={ “ircEvent”:“PRIVMSG”, “方法”:“newURI”, “regex”:“^http://.*” }; //方式1 让过滤器1={} Object.keys({…myObject}).filter(d=>{ if(d!==“正则表达式”){ filter1[d]=我的对象[d]; } }) console.log(过滤器1) //方式2 let filter2=Object.fromEntries(Object.entries({…myObject}).filter(d=> d[0]!==' 正则表达式' )) console.log(筛选器2)
let filter=Object.fromEntries(Object.entries(myObject).filter(d=>d!=='regex'))
var a={“bool”:{“must”:[{“range”:{:“price_index.final_price”:{'“gt”:“450”,“lt”:“500”}}},{“bool”:}“should”:[[{”term“:{”color_value.keyword“:”Black“}}]}}}}{; 函数getPathOfKey(对象,键,当前路径,t){ var currentPath=当前路径||[]; for(对象中的变量i){ 如果(i==键){ t=当前路径; } else if(对象类型[i]==“对象”){ currentPath.push(i) return getPathOfKey(对象[i],键,当前路径) } } t.push(按键); 返回t; } document.getElementById(“output”).innerHTML=JSON.stringify(getPathOfKey(a,“price_index.final_price”))
<div id=“output”> </div>
var unset=要求('lodash.unset'); unset(a,getPathOfKey(a,“price_index.final_price”);
让myObject={ “ircEvent”:“PRIVMSG”, “方法”:“newURI”, “regex”:“^http://.*” }; obj=对象.fromEntries( Object.entries(myObject).filter(函数(m){ 返回m[0]!= “regex”/*或任何要删除的键*/ } )) 控制台.log(obj)
让myObject={ “ircEvent”:“PRIVMSG”, “方法”:“newURI”, “regex”:“^http://.*” }; let prop=“regex”; const-updatedObject=Object.keys(myObject).reduce((Object,key)=>{ if(键!==属性){ object[key]=myObject[key] } 回波信号 }, {}) console.log(更新对象);