关于javascript中对象的操作的问题

https://jsfiddle.net/20170808...

请问如何才能输出如下格式↓
//王俊凯 王源 易烊千玺
//蔡依林
//阿娇 阿Sa

var data = [
{
  singer: [
    {name: '王俊凯',age: 18}, 
    {name: '王源',age: 20}, 
    {name: '易烊千玺',age: 18}]}, 
{
  singer: [{name: '蔡依林',age: 33}]}, 
{
  singer: [
    {name: '阿娇',age: 31},
    {name: '阿Sa',age: 30}]
}]

data.forEach((item) => {
  item.singer.forEach(v=>{
    console.log(v.name)
  })
});
现在是一个一个输出人名
//王俊凯
//王源
//易烊千玺
//蔡依林
//阿娇
//阿Sa

请问如何才能输出如下格式(在一个组的一起输出)↓
//王俊凯 王源 易烊千玺
//蔡依林
//阿娇 阿Sa
阅读 2.7k
4 个回答
var data = [
{
  singer: [
    {name: '王俊凯',age: 18}, 
    {name: '王源',age: 20}, 
    {name: '易烊千玺',age: 18}]}, 
{
  singer: [{name: '蔡依林',age: 33}]}, 
{
  singer: [
    {name: '阿娇',age: 31},
    {name: '阿Sa',age: 30}]
}];
for(let i=0; i<data.length; i++){
    let arr = [];
    data[i].singer.map((item)=>{
        arr.push(item.name);
    })
    console.log(arr.join(' '))
}

复制到控制台去试试吧。

data.forEach( (dataItem,index)=>{
      var str = ''
      dataItem.singer.forEach( (singerItem,index)=>{
        str += (singerItem.name + ',')
      })
      console.log(str.slice(0,str.length-1) )
        
})
data.forEach(o=>{
    var name = o.singer.map(a=>a.name).join(" ")
    console.log(name)
})

兼容的话用babel转一下

var data = [
    {
      singer: [
            {name: '王俊凯',age: 18}, 
            {name: '王源',age: 20}, 
            {name: '易烊千玺',age: 18}
        ]
    }, 
    {
      singer: [{name: '蔡依林',age: 33}]
    }, 
    {
      singer: [
        {name: '阿娇',age: 31},
        {name: '阿Sa',age: 30}]
    }
]

data.forEach(obj => {
    console.log(obj.singer.map(item => item.name).join(" "));
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题