Jquery 在highcharts饼图中匹配2个数组值
我在这里用highchart创建了一个饼图,我希望当点击饼图区域时,控制台会根据我使用“if else”设置的条件编写一些数据库 我这里有两个json数据:Jquery 在highcharts饼图中匹配2个数组值,jquery,json,Jquery,Json,我在这里用highchart创建了一个饼图,我希望当点击饼图区域时,控制台会根据我使用“if else”设置的条件编写一些数据库 我这里有两个json数据: var json = { "data": [ { "topic": "Manchester United F.C.", "id": "/en/manchester_united_fc", "type": "/soccer/football_team",
var json = {
"data": [
{
"topic": "Manchester United F.C.",
"id": "/en/manchester_united_fc",
"type": "/soccer/football_team",
"audience": [
{
"userid": "100003921730958",
"source": "Manchester United",
"category": "Professional sports team"}
]},
{
"topic": "Chelsea F.C.",
"id": "/en/chelsea_fc",
"type": "/soccer/football_team",
"audience": [
{
"userid": "100003921730958",
"source": "Frank Lampard",
"category": "Athlete"},
{
"userid": "100003914111287",
"source": "Chelsea Football Club",
"category": "Professional sports team"}
]}
]
};
var jsonFB = {
"user1": [
{
"id": "100003921730958",
"name": "Tan Jercia",
"favorite_teams": [
{
"id": "19034719952",
"name": "Real Madrid C.F."},
{
"id": "7724542745",
"name": "Manchester United"}
],
"interested_in": [
"female",
"male"
],
"likes": {
"data": [
{
"name": "Corrinne May",
"category": "Musician/band",
"id": "17393005071",
"created_time": "2012-07-04T05:56:47+0000"},
{
"name": "Men In Black",
"category": "Movie",
"id": "168169803229342",
"created_time": "2012-06-06T21:21:19+0000"},
{
"name": "Pubbing",
"category": "Interest",
"id": "106265502743004",
"created_time": "2012-05-28T07:04:17+0000"},
{
"name": "Sleeping",
"category": "Public figure",
"id": "102168219824412",
"created_time": "2012-05-28T07:03:58+0000"},
{
"name": "Lionel Messi",
"category": "Interest",
"id": "105543199478544",
"created_time": "2012-05-28T07:03:37+0000"},
{
"name": "David Villa Sánchez",
"category": "Athlete",
"id": "20714737025",
"created_time": "2012-05-28T07:03:18+0000"},
{
"name": "Frank Lampard",
"category": "Athlete",
"id": "115714874568",
"created_time": "2012-05-28T10:15:04+0000"},
{
"name": "Real Madrid C.F.",
"category": "Professional sports team",
"id": "19034719952",
"created_time": "2012-05-28T07:02:57+0000"},
{
"name": "Manchester United",
"category": "Professional sports team",
"id": "7724542745",
"created_time": "2012-05-28T07:02:22+0000"},
{
"name": "Badminton",
"category": "Sport",
"id": "112285278784684",
"created_time": "2012-05-28T07:02:16+0000"},
{
"name": "Swimming",
"category": "Sport",
"id": "109717462380351",
"created_time": "2012-05-28T07:02:13+0000"},
{
"name": "The Vampire Diaries - Tv Series/Books",
"category": "Community",
"id": "133372903419059",
"created_time": "2012-05-28T06:37:38+0000"},
{
"name": "Gossip Girl",
"category": "Tv show",
"id": "8811587900",
"created_time": "2012-05-28T06:37:38+0000"},
{
"name": "Dear John",
"category": "Movie",
"id": "154526009569",
"created_time": "2012-05-28T06:37:37+0000"},
{
"name": "The Vow",
"category": "Movie",
"id": "131563483577190",
"created_time": "2012-05-28T06:37:37+0000"},
{
"name": "Harry Potter",
"category": "Movie",
"id": "156794164312",
"created_time": "2012-05-28T06:37:36+0000"},
{
"name": "Avengers",
"category": "Movie",
"id": "126757470715601",
"created_time": "2012-05-28T06:37:36+0000"},
{
"name": "Batman: The Dark Knight",
"category": "Movie",
"id": "12887942787",
"created_time": "2012-05-28T06:37:35+0000"},
{
"name": "The Transporter",
"category": "Movie",
"id": "105485349484433",
"created_time": "2012-05-28T06:37:34+0000"},
{
"name": "Ip Man",
"category": "Movie",
"id": "104108312958644",
"created_time": "2012-05-28T06:37:33+0000"},
{
"name": "How to Train Your Dragon",
"category": "Movie",
"id": "96698020019",
"created_time": "2012-05-28T06:37:33+0000"},
{
"name": "Battleship",
"category": "Movie",
"id": "116119711759494",
"created_time": "2012-05-28T06:37:32+0000"},
{
"name": "Inception",
"category": "Movie",
"id": "91290503700",
"created_time": "2012-05-28T06:37:32+0000"},
{
"name": "John Carter",
"category": "Movie",
"id": "192790732230",
"created_time": "2012-05-28T06:37:31+0000"},
{
"name": "Transformers 3",
"category": "Movie",
"id": "118936754809410",
"created_time": "2012-05-28T06:37:31+0000"},
{
"name": "Snow White and the Huntsman",
"category": "Movie",
"id": "186450181387455",
"created_time": "2012-05-28T06:37:30+0000"},
{
"name": "This Means War",
"category": "Movie",
"id": "290847887611269",
"created_time": "2012-05-28T06:37:29+0000"},
{
"name": "Harry Potter",
"category": "Book",
"id": "107641979264998",
"created_time": "2012-05-28T06:37:29+0000"},
{
"name": "Love Story",
"category": "Book",
"id": "109789932381273",
"created_time": "2012-05-28T06:37:28+0000"},
{
"name": "Justin Bieber",
"category": "Musician/band",
"id": "67253243887",
"created_time": "2012-05-28T06:37:28+0000"},
{
"name": "Kelly Clarkson",
"category": "Musician/band",
"id": "18481194560",
"created_time": "2012-05-28T06:37:26+0000"},
{
"name": "Jessie J",
"category": "Musician/band",
"id": "145300805513355",
"created_time": "2012-05-28T06:37:26+0000"},
{
"name": "Katy Perry",
"category": "Musician/band",
"id": "7126051465",
"created_time": "2012-05-28T06:37:25+0000"}
],
"paging": {
"next": "https://graph.facebook.com/100003921730958/likes?limit=5000&offset=5000"
}
}}
]
};
所以,基本上我希望在单击饼图区域时,通过匹配两个userid(我尝试使用循环数组匹配方法),检索用户名并写入控制台。但是它不起作用(
plotOptions:{
馅饼:{
allowPointSelect:true,
光标:“指针”,
要点:{
活动:{
单击:函数(){
for(i=0;i
问题出在您的条件下:
for (i = 0; i < jsonFB.user1[i]; i++) {
for (j = 0; j < json.data[j].audience[j]; j++) {
现在,您的(已调整的)if
将起作用:
if (jsonFB.user1[i].id == json.data[k].audience[j].userid) {
但是,我必须指出,这只会确保json
和jsonFB
数据之间的每次匹配都会在控制台上打印一次用户名。这与图表中单击的内容没有任何关系。请检查一下。恐怕您必须自己解决具体问题,但我建议在事件点开始(您需要的信息似乎就在那里):
可能也会有帮助
更新:如果您有多个用户(如user1
、user2
等),您可以像这样迭代它们:
$.each(jsonFB, function(prop, value) {
if ( prop.indexOf("user") == 0 ) { // Check if the name starts with "user"
for (i = 0; i < value.length; i++) {...} // Replaces jsonFB.user1.length
}
});
$。每个(jsonFB,函数(属性,值){
如果(prop.indexOf(“user”)==0{//检查名称是否以“user”开头
对于(i=0;i
如果我想在“JSONFB”中再添加一个用户,该怎么办?我的代码是否需要添加另一个循环,以便它首先检查其用户?因此它变为for(var s=0;s继续如上所述?@user1914667是,但如果您的用户是属性(而不是列表的元素)-就像user1
,user2
等-那么迭代的方式是不同的。因为您使用的是jQuery,最简单的方式是$。每个(jsonFB,函数(prop,value){…})
,但是您也可以为(jsonFB中的var prop){…}
使用。有关更多信息,请参阅和。另请参阅更新的答案。
if (jsonFB.user1[i].id == json.data[k].audience[j].userid) {
click: function(event) {
console.log(event.point);
$.each(jsonFB, function(prop, value) {
if ( prop.indexOf("user") == 0 ) { // Check if the name starts with "user"
for (i = 0; i < value.length; i++) {...} // Replaces jsonFB.user1.length
}
});