У меня есть объект, содержащий объекты. Я хочу вернуть новый объект, содержащий только объекты, свойства которых имеют определенное значение.

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);
1
GTA.sprx 7 Авг 2020 в 08:12

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);
3
zmag 7 Авг 2020 в 05:23

Вы можете попробовать это

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);
0
Emran 7 Авг 2020 в 05:29

Вы используете комбинации Object.entries, которые возвращают массив объектов с [[ключ, значение], [ключ, значение], ...]. Затем вы можете filter ваши данные на основе условия, а в конце просто сохранить нужный формат, используя map.

Подробнее об этом можно прочитать ниже:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries

var 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 keys
console.log(arr.filter(a=>a[1].prop1==="abc").map(a1=>a1[1])) // Just array of objects
0
Pramod Mali 7 Авг 2020 в 05:23