Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить все свойства объекта кроме методов (https://javascript.ru/forum/misc/84195-poluchit-vse-svojjstva-obekta-krome-metodov.html)

NovichokJS 03.07.2022 17:23

Получить все свойства объекта кроме методов
 
Сейчас получаю только значения объекта в массиве.
const user = {
  name: 'Alex',
  age: 32,
  offer() {
    console.log(`${this.name} have invited`);
  },
};

function getProperties(obj) {
 let arr = [];
  for (let prop in obj) {
    if (typeof obj[prop] !== 'function') {
      arr.push(obj[prop]);
    }
  }
  return arr;
}

console.log(getProperties(user));


Как сделать чтобы получить массив свойств объекта кроме методов, такого вида:
[ name: 'Alex', age: 32 ]
или правильнее наверное будет такого вида:
[ 'name: Alex', 'age: 32' ]

рони 03.07.2022 18:17

NovichokJS,
const user = {
  name: 'Alex',
  age: 32,
  offer() {
    console.log(`${this.name} have invited`);
  },
};

function getProperties(obj) {
  return Object.keys(obj).filter(prop => typeof obj[prop] !== 'function');
}

console.log(getProperties(user));

рони 03.07.2022 18:24

Цитата:

Сообщение от NovichokJS
Получить все свойства объекта кроме методов
Сейчас получаю только значения объекта в массиве.

arr.push(obj[prop]);
arr.push(prop);

NovichokJS 03.07.2022 18:27

так это мы только ключи получаем. Свойства объекта - это ж ключи со значениями?

рони 03.07.2022 18:33

NovichokJS,
:-? что хотите получить, если всё не устраивает, можно пример?

NovichokJS 03.07.2022 18:35

Цитата:

Сообщение от рони (Сообщение 546445)
NovichokJS,
:-? что хотите получить, если всё не устраивает, можно пример?

это [ 'name: Alex', 'age: 32' ]

рони 03.07.2022 18:42

Цитата:

Сообщение от NovichokJS
это [ 'name: Alex', 'age: 32' ]

arr.push(`${prop}:${obj[prop]}`);

NovichokJS 03.07.2022 18:44

спасибо, понял!

рони 03.07.2022 18:55

NovichokJS,
:)
const user = {
  name: 'Alex',
  age: 32,
  offer() {
    console.log(`${this.name} have invited`);
  },
};

function getProperties(obj) {
  return Object.entries(obj).filter(([_, value]) => typeof value !== 'function').map(a => a.join(': '));
}

console.log(getProperties(user));


Часовой пояс GMT +3, время: 00:49.