Javascript 如何删除对象中特定键的所有实例?
我有一个大型javascript对象,其中包含一个键的多个实例。我想从对象中删除此键和值的所有实例 我有这个函数,它允许我找到一个嵌套对象,尽管我不知道如何修改它以获得所有对象,以及如何从对象中删除键。有人能帮我吗Javascript 如何删除对象中特定键的所有实例?,javascript,ramda.js,Javascript,Ramda.js,我有一个大型javascript对象,其中包含一个键的多个实例。我想从对象中删除此键和值的所有实例 我有这个函数,它允许我找到一个嵌套对象,尽管我不知道如何修改它以获得所有对象,以及如何从对象中删除键。有人能帮我吗 var findObjectByKey= function (o, key) { if (!o || (typeof o === 'string')) { return null } if (o[key]) { return o[key]; }
var findObjectByKey= function (o, key) {
if (!o || (typeof o === 'string')) {
return null
}
if (o[key]) {
return o[key];
}
for (var i in o) {
if (o.hasOwnProperty(i)) {
var found = findObjectByKey(o[i], key)
if (found) {
return found
}
}
}
return null
}
这是一个示例对象,我想在其中删除所有键d
:
var a = {
b: {
c: {
d: 'Hello',
},
d: 'Hola',
e: {
f: {
d: 'Hey'
}
}
}
}
// To become
var a = {
b: {
c: {},
e: {
f: {}
}
}
}
还有,有没有一种方法可以让拉姆达偶然做到这一点
感谢在适当位置更改对象,您只需更改:
return o[key];
致:
要返回新对象,请使用object.assign()
创建一个新对象,然后删除有问题的密钥。然后在其余键上递归:
var a={
b:{
c:{
d:'你好',
},
d:‘你好’,
e:{
f:{
d:‘嘿’
}
}
}
}
var findObjectByKey=函数(o,键){
如果(!o | |(typeof o=='string'){//假定所有的叶子都是字符串
返回o
}
o=Object.assign({},o)//创建一个浅拷贝
如果(o[键]){
删除o[key]//如果找到则删除key
}
Object.keys(o.forEach)(k=>{
o[k]=findObjectByKey(o[k],key)//对子对象执行相同的操作
})
return o//返回新对象
}
设obj=findObjectByKey(a,'d')
console.log(obj)
要在适当的位置更改对象,只需更改:
return o[key];
致:
要返回新对象,请使用object.assign()
创建一个新对象,然后删除有问题的密钥。然后在其余键上递归:
var a={
b:{
c:{
d:'你好',
},
d:‘你好’,
e:{
f:{
d:‘嘿’
}
}
}
}
var findObjectByKey=函数(o,键){
如果(!o | |(typeof o=='string'){//假定所有的叶子都是字符串
返回o
}
o=Object.assign({},o)//创建一个浅拷贝
如果(o[键]){
删除o[key]//如果找到则删除key
}
Object.keys(o.forEach)(k=>{
o[k]=findObjectByKey(o[k],key)//对子对象执行相同的操作
})
return o//返回新对象
}
设obj=findObjectByKey(a,'d')
console.log(obj)
使用R。当时,如果o
是一个对象,则对其应用R.pipe
。在管道中,使用R.dissoc
从对象中删除属性。使用R.map
迭代其他属性,并尝试删除每个属性的属性
const removePropDeep=R.curry((prop,o)=>R.when(
R.is(对象),
右管(
R.dissoc(道具),
右地图(移除PropDeep(道具))
),
o
))
常数a={
b:{
c:{
d:'你好',
},
d:‘你好’,
e:{
f:{
d:‘嘿’
}
}
}
}
const result=removePropDeep('d')(a)
console.log(结果)
使用R。当时,如果o
是一个对象,则对其应用R.pipe
。在管道中,使用R.dissoc
从对象中删除属性。使用R.map
迭代其他属性,并尝试删除每个属性的属性
const removePropDeep=R.curry((prop,o)=>R.when(
R.is(对象),
右管(
R.dissoc(道具),
右地图(移除PropDeep(道具))
),
o
))
常数a={
b:{
c:{
d:'你好',
},
d:‘你好’,
e:{
f:{
d:‘嘿’
}
}
}
}
const result=removePropDeep('d')(a)
console.log(结果)
关于Array.prototype.filter()
?您想就地更改对象还是返回一个新对象?我宁愿返回一个新对象。可能的重复:关于Array.prototype.filter()
?您想就地更改对象还是返回一个新对象?我宁愿返回一个新对象。可能的重复: