как сделать console.log объектом в одну строку - PullRequest
0 голосов
/ 02 мая 2020

Я хочу изменить этот объект

const myObject = { "first": ["x","y", "z"], "second": ["a", "b"], "third": ["c"] }
const string = "String!";
const count = () => {
  const result = Object.entries(myObject ).forEach(([key, value]) =>
    console.log(`${key} ${value.length > 1 ? ("x " + value.length) : ""} (${value})`)
  );
  return result;
};
count();

Я попал сюда

first x 3 (x, y, z)
second x 2 (a, b) 
third (c)

Я хотел бы получить этот вывод, как я могу поместить его в одну строку и строку раньше? или я должен использовать новую функцию для этого?

String! first x 3 (x, y, z) – second x 2 (a, b) - third(c)

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Чтобы получить результат, который вы сказали, что вы хотите, вы должны:

  1. Использовать map для создания массива записей, а не для вывода этих строк.

  2. Добавить string в начало.

  3. Превратить массив в строку с " - " между записями, возможно, через join(" - ").

Я бы также рекомендовал передавать myObject в count в качестве аргумента, а не использовать его напрямую:

Живой пример:

const myObject = { "first": ["x","y", "z"], "second": ["a", "b"], "third": ["c"] }
const string = "String!";
const count = (obj) => {
  const result = Object.entries(obj).map(([key, value]) =>
    `${key} ${value.length > 1 ? ("x " + value.length) : ""} (${value})`
  );
  return result;
};
console.log(string + " " + count(myObject).join(" - "));

Или, если вы хотите сделать это в течение count, также введите string:

const myObject = { "first": ["x","y", "z"], "second": ["a", "b"], "third": ["c"] }
const string = "String!";
const count = (obj, str) => {
  const result = Object.entries(obj).map(([key, value]) =>
    `${key} ${value.length > 1 ? ("x " + value.length) : ""} (${value})`
  );
  return `${str} ${result.join(" - ")}`;
};
console.log(count(myObject, string));
0 голосов
/ 02 мая 2020

Вы можете использовать метод reduce и объединить все значения. Это будет комбинация map and join. Самый простой среди всех API и более быстрый.

const count = (prefix, obj) => {
  const result = Object.entries(obj).reduce(
    (str, [key, value]) =>
      (str += ` ${key} ${
        value.length > 1 ? "X " + value.length : ""
      } (${value})`),
    prefix
  );
  return result;
};
const myObject = { first: ["x", "y", "z"], second: ["a", "b"], third: ["c"] };
const string = "String!";

console.log(count(string, myObject));

Самый быстрый из всех [использовать цикл for-in]:

const count = (obj, prefix = "") => {
  for (let key in obj) {
    let value = obj[key];
    prefix +=
      value && value.length > 1
        ? ` ${key} X ${value.length} (${value})`
        : ` ${key} (${value})`;
  }
  return prefix;
};
const myObject = { first: ["x", "y", "z"], second: ["a", "b"], third: ["c"] };
const string = "String!";

console.log(count(myObject, string));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...