使用javascript将关联数组拆分为两个数组

使用javascript将关联数组拆分为两个数组,javascript,arrays,associative-array,Javascript,Arrays,Associative Array,我有很多俱乐部 var clubs =[{ team: {name: "fcb barca", rank: 4}, team: {name: "man utd", rank: 16}, team: {name: "man city", rank: 36}, team: {name: "fcb liverpool", rank: 57} }]; 我需要将其拆分为两个数组,因此预期的结果是 teams["fcb barca", "man utd" , "man

我有很多俱乐部

var clubs =[{
    team: {name: "fcb barca", rank: 4},
    team: {name: "man utd", rank: 16},
    team: {name: "man city", rank: 36},
    team: {name: "fcb liverpool", rank: 57}
}];
我需要将其拆分为两个数组,因此预期的结果是

  teams["fcb barca", "man utd" , "man city", "fcb liverpool"];
  rank[4,16,36,57];
我尝试了以下代码,但似乎不起作用

var team = [];
 var rank = [];
 for(var i = 0; i < clubs.length; i++){
   var tempArray1 = teams{{name: clubs[i].name, grade: clubs[i].rank}};
   var tempArray2 = teams{name: clubs[i].name, grade: clubs[i].rank};
   team.push( tempArray1 );
   rank.push( tempArray2 );
 };

console.log(team);
console.log(rank);
var团队=[];
var秩=[];
对于(变量i=0;i<0.length;i++){
var tempArray1=球队{{名称:俱乐部[i]。名称、等级:俱乐部[i]。排名};
var tempArray2=球队{名称:俱乐部[i]。名称、等级:俱乐部[i]。排名};
团队推进(临时1);
等级推送(临时排列2);
};
控制台日志(团队);
控制台日志(秩);

我会恨自己在五分钟内就这么做了。 但首先,您的代码目前根本不接近有效

让我们评估一下这里的问题:

clubs[{
    team{name: "fcb barca", rank: 4}
    team{name: "man utd", rank: 16}
    team{name: "man city", rank: 36}
    team{name: "fcb liverpool", rank: 57}
}];
首先,俱乐部缺少一个变量声明,如:

var clubs = [
其次,您将俱乐部声明为带有
[
的数组,但是,您的数组只包含一个对象,因为您使用
{

在这一点之后,有多个问题。第一个问题:

team{ 
不是有效的javascript对象。但是
团队:{
将是。 现在转到下一个问题,您有几个对象没有逗号分隔,彼此紧跟在一起:

team : {name: "fcb barca", rank: 4}
team : {name: "man utd", rank: 16}
应该是这样的:

team : {name: "fcb barca", rank: 4},
team : {name: "man utd", rank: 16}
var clubs = [{
    team : {name: "fcb barca", rank: 4},
    team : {name: "man utd", rank: 16}
}];
然而,如果将其正确放置,则其将如下所示:

team : {name: "fcb barca", rank: 4},
team : {name: "man utd", rank: 16}
var clubs = [{
    team : {name: "fcb barca", rank: 4},
    team : {name: "man utd", rank: 16}
}];
现在我们有另一个问题。您有一个数组,
clubs
,其中包含一个对象,该对象具有多个同名键
team

那是行不通的

您的代码应该如下所示:

let clubs = [
    {name: "fcb barca", rank: 4},
    {name: "man utd", rank: 16},
    {name: "man city", rank: 36},
    {name: "fcb liverpool", rank: 57}
];
或者,如果您想成为团队的目标

let clubs = [
    { team: {name: "fcb barca", rank: 4} },
    { team: {name: "man utd", rank: 16} },
    { team: {name: "man city", rank: 36} },
    { team: {name: "fcb liverpool", rank: 57} }
];
然后,当语法正确时,可以如下循环:

let teams = [];
let ranks = [];

clubs.forEach(function(club){
    teams.push(club.name);
    ranks.push(club.rank);
});
console.log(teams);
console.log(ranks);

如果代码有效,这会有帮助。告诉我们您尝试了什么以及预期的结果是什么。Stackoverflow不是一个免费的代码编写服务,如果您告诉我们您想用代码做什么,请在数组上循环并将其推到其他数组中。抱歉,各位,我已经编辑了这个问题以使其更清楚。希望它有帮助。您应该讨厌f或者在数组上使用
for in
也可以让我竖起大拇指,只是因为你已经解决了这个非常令人困惑的难题,OP's invalid codewell,happy pappy@charlietfl?仅仅建议最佳实践就是我在02:15回答这个问题时,喝醉了应该是好的tbh:P