按属性值过滤对象

我有一个包含对象的对象。我想返回一个新对象,该对象仅包含具有特定值属性的对象。


const object = {

  a: {prop1: 'abc', prop2: 'def', prop3: 'ghi'},

  b: {prop1: 'jkl', prop2: 'mno', prop3: 'pqr'},

  c: {prop1: 'abc', prop2: 'def', prop3: 'ghi'},

  d: {prop1: 'abc', prop2: 123, prop3: 'ghi'}

};


let group = {};


for (let key in object) {

  if (object[key].prop1 === 'abc') {

    group += object[key];

  }

  console.log(object[key].prop1);

}


console.log(group);


冉冉说
浏览 172回答 3
3回答

繁华开满天机

+=运算符不能像您预期的那样处理对象。尝试=像这样的运算符group[key] = object[key]。const object = {    a: {prop1: 'abc', prop2: 'def', prop3: 'ghi'},    b: {prop1: 'jkl', prop2: 'mno', prop3: 'pqr'},    c: {prop1: 'abc', prop2: 'def', prop3: 'ghi'},    d: {prop1: 'abc', prop2: 123, prop3: 'ghi'}};let group = {};for (let key in object) {    if (object[key].prop1 === 'abc') {        group[key] = object[key];    }}console.log(group);

陪伴而非守候

你可以试试这个const object = {    a: {prop1: 'abc', prop2: 'def', prop3: 'ghi'},    b: {prop1: 'jkl', prop2: 'mno', prop3: 'pqr'},    c: {prop1: 'abc', prop2: 'def', prop3: 'ghi'},    d: {prop1: 'abc', prop2: 123, prop3: 'ghi'}};let group = {};for (let key in object) {    if (object[key].prop1 === 'abc') {        group[key] = object[key];    }    console.log(object[key]);}console.log(group);

慕哥9229398

您使用Object.entries返回对象数组与 [[key, value],[key,value],...] 的组合。接下来,您可以filter根据条件获取数据,最后只保留您想要使用的格式map。您可以在下面阅读有关这些的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entrieshttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filterhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/maphttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntriesvar object = {    a: {prop1: 'abc', prop2: 'def', prop3: 'ghi'},    b: {prop1: 'jkl', prop2: 'mno', prop3: 'pqr'},    c: {prop1: 'abc', prop2: 'def', prop3: 'ghi'},    d: {prop1: 'abc', prop2: 123, prop3: 'ghi'}};var arr = Object.entries(object);   console.log(Object.fromEntries(arr.filter(a=>a[1].prop1==="abc"))); // Keeps your keysconsole.log(arr.filter(a=>a[1].prop1==="abc").map(a1=>a1[1])) // Just array of objects
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript