Фильтровать объект по значению вероятности - PullRequest
1 голос
/ 07 августа 2020

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

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);

Ответы [ 3 ]

3 голосов
/ 07 августа 2020
Оператор

+= не работает должным образом с объектами.

Попробуйте оператор =, например 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);
0 голосов
/ 07 августа 2020

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

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 голосов
/ 07 августа 2020

Вы используете комбинации 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...