首页 > 解决方案 > 为什么对象的键只是第一个字符?

问题描述

如何获取翻译对象中列出的值?

我正在尝试使用数组解构来获取对象值。

即使在获取键时,javascript 也不会返回完整的键值,例如getaQuote它只是第一个字母g

预期的控制台结果将是:

getaQuote : a : Get a Quote: Kostenloses Angebot : Richiedi un preventivo : Teklif Al
uploadFile : b : Upload File: Datei Upload : Datei Upload : Dosya Gönder

"use strict";

const translations = {
  getaQuote: {
    loc: "a",
    en: "Get a Quote",
    de: "Kostenloses Angebot",
    it: "Richiedi un preventivo",
    tr: "Teklif Al"
  },
  uploadFile: {
    loc: "b",
    en: "Upload File",
    de: "Datei Upload",
    it: "Datei Upload",
    tr: "Dosya Gönder"
  },
  contacts: { loc: "c", en: "Contacts", de: "Kontakt", it: "Contatti" , tr: "İletişim"}
};
  for (let  [key, value] in translations ) {
    let result = `${key}: ${value.loc} : ${value.en} : ${value.de} : ${value.it}:  ${value.tr}`;
    console.log(result);
  }

标签: javascriptobject

解决方案


您可以使用for ... in语句从对象中获取键,但字符串会使用前两个字符进行解构。

字符串的解构调用实现的迭代器并返回字符。

const [key, value] = 'get';

console.log(key);
console.log(value);

为了克服这个问题,您可以迭代对象的条目并使用for ... ofstatement获取解构的对。

"use strict";

const translations = {
  getaQuote: {
    loc: "a",
    en: "Get a Quote",
    de: "Kostenloses Angebot",
    it: "Richiedi un preventivo",
    tr: "Teklif Al"
  },
  uploadFile: {
    loc: "b",
    en: "Upload File",
    de: "Datei Upload",
    it: "Datei Upload",
    tr: "Dosya Gönder"
  },
  contacts: { loc: "c", en: "Contacts", de: "Kontakt", it: "Contatti" , tr: "İletişim"}
};
  for (let  [key, value] of Object.entries(translations)) {
    let result = `${key}: ${value.loc} : ${value.en} : ${value.de} : ${value.it}:  ${value.tr}`;
    console.log(result);
  }


推荐阅读