如何按值过滤JavaScript对象?

如何按值过滤JavaScript对象?,javascript,ecmascript-6,Javascript,Ecmascript 6,我有一个标准化对象,例如: const raw = { 1: { foo: 1, bar: 1, flag: 0 }, 4: { foo: 4, bar: 4, flag: 1 }, 11: { foo: 11, bar: 11, flag: 0 }, ... } 我想删除具有标志:1的值 我怎样才能永久地做到这一点?您可以使用和 var obj={ 1:{foo:1,bar:1,flag:0}, 2:{foo:2,bar:2,flag:1}, 3:{foo:3,bar:3,

我有一个标准化对象,例如:

const raw = {
  1: { foo: 1, bar: 1, flag: 0 },
  4: { foo: 4, bar: 4, flag: 1 },
  11: { foo: 11, bar: 11, flag: 0 },
  ...
}
我想删除具有标志:1的值

我怎样才能永久地做到这一点?

您可以使用和

var obj={ 1:{foo:1,bar:1,flag:0}, 2:{foo:2,bar:2,flag:1}, 3:{foo:3,bar:3,flag:0} } var newobj=Object.assign{},Object.valuesobj.filtero=>o.flag!=1. console.lognewobj 您可以使用和

var obj={ 1:{foo:1,bar:1,flag:0}, 2:{foo:2,bar:2,flag:1}, 3:{foo:3,bar:3,flag:0} } var newobj=Object.assign{},Object.valuesobj.filtero=>o.flag!=1.
console.lognewobj 可以通过lodashjs进行对象过滤。


可以通过lodashjs进行对象过滤。

您可以使用Object.keys和.reduce方法:

让数据={ 1:{foo:1,bar:1,flag:0}, 2:{foo:2,bar:2,flag:1}, 3:{foo:3,bar:3,flag:0} }; 让result=Object.keysdata.reducea,c=>{ ifdata[c]。标志!==1 a[c]=对象.赋值{},数据[c]; 返回a; }, {}; console.logresult; .as控制台包装{max height:100%!important;top:0;}您可以使用Object.keys和.reduce方法:

让数据={ 1:{foo:1,bar:1,flag:0}, 2:{foo:2,bar:2,flag:1}, 3:{foo:3,bar:3,flag:0} }; 让result=Object.keysdata.reducea,c=>{ ifdata[c]。标志!==1 a[c]=对象.赋值{},数据[c]; 返回a; }, {}; console.logresult;
.作为控制台包装器{max height:100%!important;top:0;}您没有为此使用数组、集合或映射的任何特殊原因?@Taichi是一个对象数组吗?正如你在评论中提到的?@Brad我的数据是这种格式的,因为我可以像原始数据一样轻松获取数据[1]。请参阅@amrendersingh no,它是对象。我想转换原始数据,就像问题中的一样。你为什么不使用数组、集合或地图呢?@太极是一个对象数组吗?正如你在评论中提到的?@Brad我的数据是这种格式的,因为我可以像原始数据一样轻松获取数据[1]。请参阅@amrendersingh no,它是对象。我想把raw转换成问题中的那样,我想这会删除raw的键,不是吗?我想这会删除raw的键,不是吗?
{
  1: { foo: 1, bar: 1, flag: 0 },
  11: { foo: 11, bar: 11, flag: 0 },
  ...
}
_.filter(obj, o => !o.flag);