Как перечислить объекты, в том числе значение, имя, номинал? - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть такой объект:

  var currencyTypes = {
    NOK: {value:1.00000, name: "Norske kroner", denomination: "kr" },
    EUR: {value:0.10733, name: "Europeiske euro", denomination: "€" },
    USD: {value:0.12652, name: "United States dollar", denomination: "$" },
    GBP: {value:0.09550, name: "Pound sterling", denomination: "£" },
  };

И я нашел способ перечислить все ключевые объекты:

var keyVal = [];
for(var v in currencyTypes) keyVal.push(v);

"There are " + keyVal.length + " different currencies here: " + keyVal

В этом списке перечислены все типы currencyTypes: NOK, EUR, USD, GBP

Но как мне распечатать список с ключом, значением, именем, номиналом?Я попытался keyVal.properties, но это не сработало.Я пытался найти решение здесь, но ничего не нашел.Мне нужен вывод, который выглядит примерно так:

NOK, Norske kroner, 1 kr
EUR, European euros, 0.10733 €
and so on

Ответы [ 6 ]

0 голосов
/ 16 ноября 2018

Если вы кодируете в спецификации ES6, вы можете использовать деструктурирующее назначение .

Я также использую метод Object.entries, чтобы превратить свойства объекта в массив пар ввода значений ключа, а затем выполнить итерацию с помощью Array.prototype.forEach.

var currencyTypes = {
  NOK: {
    value: 1.00000,
    name: "Norske kroner",
    denomination: "kr"
  },
  EUR: {
    value: 0.10733,
    name: "Europeiske euro",
    denomination: "€"
  },
  USD: {
    value: 0.12652,
    name: "United States dollar",
    denomination: "$"
  },
  GBP: {
    value: 0.09550,
    name: "Pound sterling",
    denomination: "£"
  },
};

Object.entries(currencyTypes).forEach(entry => {
  const [key, val] = entry;
  const {
    value,
    name,
    denomination
  } = val;
  console.log(`${key}\n${value}\n${name}\n${denomination}`);
});
0 голосов
/ 16 ноября 2018

Если вы представите свою коллекцию в виде массива, вам будет легче делать такие вещи:

const currencyTypes = [
  { "ticker": "NOK", "value":1.00000, "name": "Norske kroner", "denomination": "kr" },
  { "ticker": "EUR", "value":0.10733, "name": "Europeiske euro", "denomination": "€" },
  { "ticker": "USD", "value":0.12652, "name": "United States", "denomination": "$" },
  { "ticker": "GBP", "value":0.09550, "name": "Pound sterling", "denomination": "£" }
];
//  Amount of currencies:
console.log( 'There are ' + currencyTypes.length + ' currencies in the array' );
//  Array of all currency tickers:
console.log( currencyTypes.map( currency => currency.ticker ));
//  Console.logging all of them:
currencyTypes.forEach( currency => console.log( currency ));
//  Console.logging the properties using destructuring:
currencyTypes.forEach(({ ticker, value, name, denomination }) => console.log( ticker, value, name, denomination ));

Если у вас есть кратные значения чего-либо, обычно проще всего использовать массивы, поскольку большинство объектов, представляющих коллекции, могут быть созданы из массива в одной строке кода.

Если вы хотите остаться с использованием объекта, посмотрите на Object.keys(), Object.values() и Object.entries(). Те будут делать много преобразования из объектов в массивы.

Функция, которую вы закодировали, чтобы получить количество ключей в объекте, в основном такая же, как Object.keys():

const currencyTypes = {
  NOK: {value:1.00000, name: "Norske kroner", denomination: "kr" },
  EUR: {value:0.10733, name: "Europeiske euro", denomination: "€" },
  USD: {value:0.12652, name: "United States dollar", denomination: "$" },
  GBP: {value:0.09550, name: "Pound sterling", denomination: "£" },
};
  
console.log( 'there are ' + Object.keys( currencyTypes ).length + ' currencies' );
0 голосов
/ 16 ноября 2018

const currencyTypes = {
    NOK: {value:1.00000, name: "Norske kroner", denomination: "kr" },
    EUR: {value:0.10733, name: "Europeiske euro", denomination: "€" },
    USD: {value:0.12652, name: "United States dollar", denomination: "$" },
    GBP: {value:0.09550, name: "Pound sterling", denomination: "£" },
};

function compileCurrenciesString(currencies) {
  let outStr = '';
  Object.keys(currencies).forEach((key) => {
    outStr += currencyToString(key, currencies[key]);
    outStr += '\n';
  });
  return outStr;
}

function currencyToString(key, currency) {
  return `${key}, ${currency.name}, ${currency.value} ${currency.denomination}`;
}

console.log(compileCurrenciesString(currencyTypes));
0 голосов
/ 16 ноября 2018

Вы можете использовать for...of цикл с Object.entries, чтобы получить key value.

var currencyTypes = { NOK: {value:1.00000, name: "Norske kroner", denomination: "kr" }, EUR: {value:0.10733, name: "Europeiske euro", denomination: "€" }, USD: {value:0.12652, name: "United States dollar", denomination: "$" }, GBP: {value:0.09550, name: "Pound sterling", denomination: "£" }};
  
for([key, {name, value, denomination}] of Object.entries(currencyTypes)) {
  let str = `${key}, ${name}, ${value} ${denomination}`
  console.log(str)
}
0 голосов
/ 16 ноября 2018

Вы можете использовать Object.keys(currencyTypes), чтобы получить все ключи объектов, а затем выполнить цикл по ним:

const currencyTypes = {
  NOK: {value:1.00000, name: "Norske kroner", denomination: "kr" },
  EUR: {value:0.10733, name: "Europeiske euro", denomination: "€" },
  USD: {value:0.12652, name: "United States dollar", denomination: "$" },
  GBP: {value:0.09550, name: "Pound sterling", denomination: "£" },
};

Object.keys(currencyTypes).forEach(k => console.log(
  `${k}, ${currencyTypes[k].name}, ${currencyTypes[k].value} ${currencyTypes[k].denomination}`
));
0 голосов
/ 16 ноября 2018

Вы можете получить к нему доступ таким образом. Это может помочь вам.

 var currencyTypes = {
    NOK: {value:1.00000, name: "Norske kroner", denomination: "kr" },
    EUR: {value:0.10733, name: "Europeiske euro", denomination: "€" },
    USD: {value:0.12652, name: "United States dollar", denomination: "$" },
    GBP: {value:0.09550, name: "Pound sterling", denomination: "£" },
  };
  
  for(var type in currencyTypes)
  {
    console.log("Currency: " + type);
    
    console.log("Value: " + currencyTypes[type].value);
    console.log("Name: " + currencyTypes[type].name);
    console.log("Denomination: " + currencyTypes[type].denomination);
    
    console.log("\n");
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...