Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除对象中特定键的所有实例?_Javascript_Ramda.js - Fatal编程技术网

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]; }

我有一个大型javascript对象,其中包含一个键的多个实例。我想从对象中删除此键和值的所有实例

我有这个函数,它允许我找到一个嵌套对象,尽管我不知道如何修改它以获得所有对象,以及如何从对象中删除键。有人能帮我吗

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()
?您想就地更改对象还是返回一个新对象?我宁愿返回一个新对象。可能的重复: