【问题标题】:How to iterate over an array of objects and return the key value as part of a string如何遍历对象数组并将键值作为字符串的一部分返回
【发布时间】:2018-12-29 16:59:11
【问题描述】:

我正在尝试遍历对象数组并返回键的格式化版本,每个对象的值。

function formattedTotalandTax() {
  let formattedData = [];
  totalAndTax = [{Total: 20.64}, {Tax: 1.64}]  
  for (const [key, value] of Object.entries(totalAndTax)) {
    formattedData.push([`${key}` + ':' + '    ' + `${value}`]);
  }
  return formattedData;
};

这是我得到的结果

0: ["0:    [object Object]"]
1: ["0:    [object Object]"]

我希望结果是

[["Total:    20.64"], ["Tax:    1.64"]]

【问题讨论】:

  • 预期的输出没有问题,下面已经回答了!
  • JSON.stringify(totalAndTax)

标签: javascript arrays object


【解决方案1】:

发生这种情况是因为您正在尝试迭代数组。你应该迭代数组项:)

function formattedTotalandTax() {
  let formattedData = [];
  totalAndTax = [{Total: 20.64}, {Tax: 1.64}]
  for (let oneTotalAndTax of totalAndTax) {
    for (const [key, value] of Object.entries(oneTotalAndTax)) {
      formattedData.push([`${key}` + ':' + '    ' + `${value}`]);
    }
  }
  return formattedData;
};

console.log(formattedTotalandTax());

【讨论】:

    【解决方案2】:

    let totalAndTax = [{Total: 20.64}, {Tax: 1.64}]; 
    
    let result = totalAndTax.map((obj) => {
       let arr = Object.entries(obj)[0];
       
       return [`${arr[0]}:   ${arr[1]}`];
    }) 
    
    console.log(result);

    【讨论】:

      【解决方案3】:

      你可以像这样使用map 两次:

      function formattedTotalandTax(totalAndTax) {
          return totalAndTax.map(oneTotalAndTax => 
              Object.entries(oneTotalAndTax).map(([key, value]) => `${key}:    ${value}`)
          );
      }
      
      console.log(formattedTotalandTax([{Total: 20.64}, {Tax: 1.64}]));

      【讨论】:

        猜你喜欢
        • 2020-07-21
        • 2020-10-02
        • 2021-12-16
        • 1970-01-01
        • 1970-01-01
        • 2017-01-29
        • 2011-10-12
        • 2021-12-16
        • 2021-10-05
        相关资源
        最近更新 更多