Javascript 分解复杂对象

Javascript 分解复杂对象,javascript,object,destructuring,Javascript,Object,Destructuring,我试图破坏一个复杂的对象,但在控制台中没有得到任何输出。我不明白为什么。我总是在浏览器中得到某种类型的未捕获的语法错误。我在想我到底做错了什么。(编辑:我只是尝试将“点击”记录到浏览器控制台,而不是在浏览器中打印它们)以下是代码: let catalog={ “艺术家”:[ { 名称:“旅程”, “点击次数”:[ “忠实地”, “只有年轻人”, “不要停止相信” ], 名称:“REO快车”, 点击次数:[ “继续爱你”, “我该飞了”, “无法抗拒这种感觉” ], 名称:“冥河”, 点击次数:

我试图破坏一个复杂的对象,但在控制台中没有得到任何输出。我不明白为什么。我总是在浏览器中得到某种类型的
未捕获的语法错误。我在想我到底做错了什么。(编辑:我只是尝试将“点击”记录到浏览器控制台,而不是在浏览器中打印它们)以下是代码:

let catalog={
“艺术家”:[
{
名称:“旅程”,
“点击次数”:[
“忠实地”,
“只有年轻人”,
“不要停止相信”
],
名称:“REO快车”,
点击次数:[
“继续爱你”,
“我该飞了”,
“无法抗拒这种感觉”
],
名称:“冥河”,
点击次数:[
“起航吧”,
“机器人先生”,
“蓝领男人”
]
}
]
};
让{hits}=catalog.artists;
用于(点击次数为x){
console.log(点击[x]);

};如果我正确理解你的问题,你只是想打印每个艺术家的点击列表。在这种情况下,我将执行以下操作:

    let catalog = {
    "artists": [
      {
        name: "Journey",
        hits: [
          "Only the young",
          "Dont Stop"
        ]
      },
      {
        name: "Styx",
        hits: [
          "Come Sail Away",
          "Mr. Roboto"
        ]
      }
    ]
  }

  let artistsArr = catalog.artists;

  function printHits() {
    for (var i = 0; i < artistsArr.length; i++) {
      console.log(artistsArr[i].hits.map(hit => hit))
    }
  }
let catalog={
“艺术家”:[
{
名称:“旅程”,
点击次数:[
“只有年轻人”,
“不要停下来”
]
},
{
名称:“冥河”,
点击次数:[
“起航吧”,
“Roboto先生”
]
}
]
}
让artistsArr=catalog.artists;
函数printHits(){
对于(变量i=0;ihit))
}
}
这将映射到您的每个艺术家,并在调用printHits()时打印他们的点击列表。

这段代码有“一些”问题,而不仅仅是“第一部作品中的角色实在太多了:)我想他想与艺术家和艺术家的作品有一系列的对象。顺便说一句,专辑、tracklen等都不见了,伙计!;)

在这里,我们的音乐爱好者变得懒洋洋的。否则他会承认上面所有的错误:)

并非所有时候都需要快捷方式,快速甚至是一个好主意来显示你有多酷。在这种情况下,它会把你搞混,因为你在调试时看不到中间的任何步骤。
至少音乐的味道没那么差:)玩得开心

我想我理解你的问题。“hits”并不是直接嵌套在艺术家下面。“hits”是一系列艺术家的作品。我只需要使用Array.map()从“catalog.artists”数组中获取“hits”数组

var目录={
艺术家:[{
名称:“旅程”,
点击次数:[
“忠实地”,
“只有年轻人”,
“不要停止相信”
],
},
{
名称:“REO快车”,
点击次数:[
“继续爱你”,
“我该飞了”,
“无法抗拒这种感觉”
],
},
{
名称:“冥河”,
点击次数:[
“起航吧”,
“机器人先生”,
“蓝领男人”
]
},
]
};
var hits=catalog.artists.map(x=>x.hits);

控制台日志(点击次数)这是一个不匹配的花括号的简单例子。如果你清理了格式,你会看到这个。试着把你的代码复制到这里,看看它是什么样子:现在你只有一个艺术家,每次都会覆盖名字和点击次数。你需要在每次点击后添加一个
},{
不是有效的JSON。据我所知,要解构你需要使用[]而不是{}你不能从数组中按名称解构属性。而是映射到数组,然后解构。
            let catalog = {
            "artists": [{
                name: "Journey",
                hits: ["Faithfully", "Only the Young", "Dont Stop Believing"],
            }, {
                name: "REO Speedwagon",
                hits: ["Keep On Loving You", "Time for Me to Fly", "Cant Fight This Feeling"]
            }, {
                name: "Styx",
                hits: ["Come Sail Away", "Mr. Roboto", "Blue Collar Man"]

            }]
        };
        for (var i = 0; i < catalog.artists.length; i++) {
          var hits = catalog.artists[i];
          console.log(hits.name);
          for (var j = 0; j < catalog.artists[i].hits.length; j++) {
            console.log("               "+catalog.artists[i].hits[j]);
          }

        }
Journey 
          Faithfully
          Only the Young
          Dont Stop Believing
REO Speedwagon
           Keep On Loving You
           Time for Me to Fly
           Cant Fight This Feeling
Styx
           Come Sail Away
           Mr. Roboto
           Blue Collar Man