JS输出对象数组

时间:2018-07-27 11:09:43

标签: javascript arrays sorting

[
    {'id': 123, 'name': 'apples', 'total': 30},
    {'id': 541, 'name': 'oranges', 'total': 42},
    {'id': 300, 'name': 'bananas', 'total': 18}
]

如何以这种形式输出此数组:

Apples: 30
Oranges: 42
Bananas: 18

我尝试了

let myArray = [{
    'id': 123,
    'name': 'apples',
    'total': 30
  },
  {
    'id': 541,
    'name': 'oranges',
    'total': 42
  },
  {
    'id': 300,
    'name': 'bananas',
    'total': 18
  }
]
console.log(JSON.stringify(myArray.map(a => a.name)))

但这不是我想要的。

5 个答案:

答案 0 :(得分:1)

您可以将Object.assign与扩展语法一起使用,并根据数组创建对象。

const data = [{'id': 123, 'name': 'apples', 'total': 30},{'id': 541, 'name': 'oranges', 'total': 42},{'id': 300, 'name': 'bananas', 'total': 18}]

const cap = str => str[0].toUpperCase() + str.slice(1)
const result = Object.assign(...data.map(({name, total}) => ({[cap(name)]: total})))
console.log(result)

答案 1 :(得分:0)

您需要迭代数组

let arr = [{
    'id': 123,
    'name': 'apples',
    'total': 30
  },
  {
    'id': 541,
    'name': 'oranges',
    'total': 42
  },
  {
    'id': 300,
    'name': 'bananas',
    'total': 18
  }
]

arr.forEach((element) => {

  // do stuff with data
  let id = element.id;
  let name = element.name;
  let total = element.total;

  console.log(`${name}: ${total}`);

  // or write in div/form with innerHtml etc..
});

答案 2 :(得分:0)

您可以执行以下操作:

var data = [
    {'id': 123, 'name': 'apples', 'total': 30},
    {'id': 541, 'name': 'oranges', 'total': 42},
    {'id': 300, 'name': 'bananas', 'total': 18}
]

console.log(data.map(a => ({[a['name'].charAt(0).toUpperCase() + a['name'].slice(1)]: a['total']})));

答案 3 :(得分:0)

您的数组将如下所示:

var fruits = [
    {'id': 123, 'name': 'apples', 'total': 30},
    {'id': 541, 'name': 'oranges', 'total': 42},
    {'id': 300, 'name': 'bananas', 'total': 18}
]

您可以使用for循环将其循环为数组。

for(i=0; i<fruits.length; i++)

{
    console.log(fruits[i].name + " : " + fruits[i].total);
}

它提供您想要的输出。

enter image description here

答案 4 :(得分:0)

您也可以这样做

let data=[
    {'id': 123, 'name': 'apples', 'total': 30},
    {'id': 541, 'name': 'oranges', 'total': 42},
    {'id': 300, 'name': 'bananas', 'total': 18}
]

let update=Object.assign(...data.map(item=> ({[item.name.charAt(0).toUpperCase() + item.name.slice(1)]:item.total})))

console.log(update);