iT邦幫忙

0

jquery 將for迴圈裡的j取出變成新的陣列

RT 我有段程式碼長這樣

var ary=p;
				var t=ary.join(",")+",";
				for(var j=0;j<ary.length;j++) 
				{
					if(t.replace(ary[j]+",","").indexOf(ary[j]+",")>-1)
					{
						e="?cmd=remove&list_id="+admin_json[j].list_id+"&song_id="+admin_json[j].song_id;
						console.log(j);
						$.getJSON("../admin/"+e,
						function(g)
						{
							req_settimeout=setTimeout(requestlist_call(),100);
						}
						);
					}
				}

而我用console看他的j似乎是這樣的
j=0
j=2
....

現在我想把每次取得的j取出變成一個新的陣列k 這樣我e才有辦法指定要哪個j

看更多先前的討論...收起先前的討論...
k是要長什麼樣子,舉例?
[0,2]這樣
Homura iT邦高手 1 級 ‧ 2018-06-28 10:01:11 檢舉
其實你改成問`J`是什麼樣子?
然後新的陣列`K`會變成什麼樣子
這樣比較好幫忙解....
j=0
j=2

而我想要變成k[0,2]
Homura iT邦高手 1 級 ‧ 2018-06-28 10:04:04 檢舉
你的`j[0]`有2個值??@@
不是由於是在for迴圈裡的關係他傳值是一個一個傳 因此不會有j[1]
兩次j[0]是不同時間傳的 還有更正一下只有j
wingkawa iT邦新手 4 級 ‧ 2018-06-28 11:31:53 檢舉
還是看不懂你想問什麼...
可以請你把`i`, `j`, `k`, `e`, `ary`, `p`, `t`改成有意義的名詞(或寫個註解)嗎?
太亂了,想看code還要花好一番力氣去理解...
你先把結構整理一下,說不定自己就自然找出答案了呢

1 個回答

0
最佳解答
j[0]=0
j[0]=2

function admin_call()
var k = []; //k 宣告在這裡
    $.getJSON("/data/admin.json",

變成k[0,2]
k.push(j); //就可以了
看更多先前的回應...收起先前的回應...

undefind http://puu.sh/ANcmt/384cbdd1a0.jpg
改j的話有結果 但是會有兩次result
http://puu.sh/ANcq1/9c51a4fa2d.jpg

忘了宣告,修正一下

忘了說我j的值是會改變的 而且似乎是j不是j[0]

好了,就覺得你整個搞錯~
/images/emoticon/emoticon10.gif

好啦 我更正了 那要怎把每次的j值push進k result只有一個呢

那就是k要宣告在你的函數外,沒問題就結案吧~

var ary=p;
				var t=ary.join(",")+",";
				var k=[];
				for(var j=0;j<ary.length;j++) 
				{
					if(t.replace(ary[j]+",","").indexOf(ary[j]+",")>-1)
					{
						k.push(j);
						e="?cmd=remove&list_id="+admin_json[j].list_id+"&song_id="+admin_json[j].song_id;
						console.log(k);
						$.getJSON("../admin/"+e,
						function(g)
						{
							req_settimeout=setTimeout(requestlist_call(),100);
						}
						);
					}
				}

還是一樣兩個result/images/emoticon/emoticon10.gif

http://puu.sh/ANcGT/55465edb5c.jpg

這整段是包在一個函數裡嗎?

是阿 完整的長這樣

function admin_call()
{
	$.getJSON("/data/admin.json",
		function(b)
		{
			var admin_json=b.admin;
			var admin_length=admin_json.length;
			admin_total_time=0;
			admin_total_number=0;
			admin_html="<table border=1 class=req_container><caption>Requested songs</caption><thead><th class=s>Index</th><th class=s>Priority</th><th>Action</th><th>Artist</th><th>Title</th><th>Time</th><th>Ip list</th></thead>";
			for(q=0;q<admin_length-1;q++)
			{
				var n=[];
				for(var i=0;i<admin_length-1;i++)
				{
					n.push(admin_json[i].artist);
				}
				
				var p=[];
				for(var j=0;j<admin_length-1;j++)
				{
					p.push(admin_json[j].title.substr(0,2));
				}
				
				var ary=n;
				var s=ary.join(",")+",";
				for(var i=0;i<ary.length;i++) 
				{
					if(s.replace(ary[i]+",","").indexOf(ary[i]+",")>-1)
					{
						if(s.split(ary[i]).length-1>3)
						{
							e="?cmd=remove&list_id="+admin_json[i].list_id+"&song_id="+admin_json[i].song_id;
							$.getJSON("../admin/"+e,
							function(g)
							{
								req_settimeout=setTimeout(requestlist_call(),100);
							}
							);
						}
					}
				}
				
				var ary=p;
				var t=ary.join(",")+",";
				var k=[];
				for(var j=0;j<ary.length;j++) 
				{
					if(t.replace(ary[j]+",","").indexOf(ary[j]+",")>-1)
					{
						k.push(j);
						e="?cmd=remove&list_id="+admin_json[j].list_id+"&song_id="+admin_json[j].song_id;
						console.log(k);
						$.getJSON("../admin/"+e,
						function(g)
						{
							req_settimeout=setTimeout(requestlist_call(),100);
						}
						);
					}
				}		
				admin_html+="<tr><td>"+admin_json[q].index+"</td><td>"+admin_json[q].priority+"</td>";
			 	admin_html+='<td><a href="javascript:void(0)" ';
				admin_html+='onclick="request('+admin_json[q].list_id+","+admin_json[q].song_id+");return false;\">Remove</a></td>";
				admin_html+="<td>"+admin_json[q].artist+"</td><td>"+admin_json[q].title+"</td><td>"+admin_json[q].length+"</td><td>"+admin_json[q].ip_list+"</td></tr>";
			}
			admin_html+="</table>";
			$("#admin_list").html(admin_html);
			
		}
	)
}

可以了吧?

再看一下,麻煩要改先重構你的code吧~ 整個亂~
/images/emoticon/emoticon04.gif

對了大大你有line嗎 上限差不多快到了 改用那個聊吧

Homura iT邦高手 1 級 ‧ 2018-06-28 11:02:57 檢舉

對啊...他的Code..../images/emoticon/emoticon02.gif

沒空聊,可以的話就結案,不行就之後再問,總之就是那樣,至於k要放哪,你就自己試吧,來結案了~
/images/emoticon/emoticon10.gif

fillano iT邦超人 1 級 ‧ 2018-06-28 17:31:08 檢舉

另外,問問題的時候,建議同時說明一下你想做什麼。你把程式碼貼出來時,會引導大家跟著你的思路走,但是這不一定能解決你的問題(就是做出你想做的結果)。很多問題的解法很多,但是需要知道你的問題是什麼。

你是想在取回的資料中,artist或title有重複時,做一些處理嗎?

rewrite iT邦新手 4 級 ‧ 2018-06-29 08:43:40 檢舉

/images/emoticon/emoticon06.gif

感謝各位的協助 昨天在詢問另一個有在開台的後已經解決了 功能也出來了 程式碼如下

function admin_call()
{
	$.getJSON("/data/admin.json",
		function(b)
		{
			var admin_json=b.admin;
			var admin_length=admin_json.length;
			var n=1;
			var count=0;
			var oartist,otitle,nartist,ntitle,de,count;
			admin_html="<table border=1 class=req_container><caption>Requested songs</caption><thead><th class=s>Index</th><th class=s>Priority</th><th>Action</th><th>Artist</th><th>Title</th><th>Time</th><th>Ip list</th></thead>";
			for(q=0;q<admin_length-1;q++)
			{
			oartist=admin_json[q].artist;
			otitle=admin_json[q].title.substr(0,2);
				for(i=n;i<admin_length-1;i++) 
				{
					nartist=admin_json[i].artist;
					ntitle=admin_json[i].title.substr(0,2);
					if(otitle==ntitle)
					{
						de=1;
					}
					else if(oartist==nartist)
					{
						count++;
						if(count>4)
						{
							de=1;
						}
					}
					if(de==1)
					{
						e="?cmd=remove&list_id="+admin_json[i].list_id+"&song_id="+admin_json[i].song_id;
						$.getJSON("../admin/"+e,
						function(g)
						{
							req_settimeout=setTimeout(requestlist_call(),100);
						}
						);
						return false
					}
				}
				n++;
				admin_html+="<tr><td>"+admin_json[q].index+"</td><td>"+admin_json[q].priority+"</td>";
			 	admin_html+='<td><a href="javascript:void(0)" ';
				admin_html+='onclick="request('+admin_json[q].list_id+","+admin_json[q].song_id+");return false;\">Remove</a></td>";
				admin_html+="<td>"+admin_json[q].artist+"</td><td>"+admin_json[q].title+"</td><td>"+admin_json[q].length+"</td><td>"+admin_json[q].ip_list+"</td></tr>";
			}
			admin_html+="</table>";
			$("#admin_list").html(admin_html);
		}
	)
}

function request(f,b,d)
{
	var e="?cmd=remove&list_id="+f+"&song_id="+b;
	$.getJSON("../admin/"+e,
		function(g)
		{
			req_settimeout=setTimeout(requestlist_call(),100)
		}
	);
	return false;
}


$(document).ready(
	function()
	{
		admin_call();
	}
);

維護這樣的code也太麻煩了,有空要改版一下~
/images/emoticon/emoticon10.gif

我要發表回答

立即登入回答