2013-01-24 95 views
0

我有以下代碼片段,裏面for循環的值包含沒有得到分配,是這是將數組複製到其他的正確方法。javascript複製到另一個陣列

這裏

var groupCondition = "ALL-OF-THEM&ALL-OF-THEM&ALL-OF-THEM&ALL-OF-THEM&"; 
    var groupParam = "rsTxTraceMsgAside&rsExpTraceMsgAside&rsTxTraceMsgBside&rsExpTraceMsgBside&#hp1TxTraceMsg&hp1ExpTraceMsg&#"; 



    var grpNameArr = groupParam.split("#"); 
    var groupcn= groupCondition.split("&"); 
    var m=grpNameArr.length; 

var contain=new Array(); 
var cmds=new Array(); 
var ii; 

for(ii=0;ii<(m-1);ii++) 
{ 
    contain[ii] = groupCn[ii]; 
    cmds[ii] = grpNameArr[ii]; 
} 
+1

'VAR groupcn =所有,所有,全部,全部;'是不是你如何創建一個數組。試試'var groupcn = [All,All,All,All];相反。 –

+0

'm'裏有什麼? – Cerbrus

+0

請參閱更新的帖子 – user1752557

回答

0

您的數組聲明是錯誤的,它應該是這樣的: -

var groupcn=["All","All","All","All"]; 
var grpNameArr=["abc","def","ghi"]; 
+0

這僅僅是我拿的一個例子!它是一個數組並且包含這些值(它與數組本身一致),但是在爲循環內部賦值時仍然存在問題 – user1752557

0

所以,在你編輯之後,我發現你的問題是你的變量名有一些錯字。

替換:

var grpNameArr = groupParm.split("#"); 
var groupcn= groupCondtn.split("&"); 

有了:

var grpNameArr = groupParam.split("#"); 
//     ^Missing `a` and `r`. 
var groupCn= groupCondition.split("&"); 
//  ^Capital C^Missing `i`'s and `o`. 

老回答

這兩條線:

var groupcn = All,All,All,All; 
var grpNameArr = abc,def,ghi; 

可能是你的問題。

你正在做的是將變量All分配給新變量groupcn,然後將All作爲新變量聲明3次。

var groupcn=All, 
    All, // new variable with the name `All` 
    All, // new variable with the name `All` 
    All; // new variable with the name `All`. These 3 override `All` 

你需要初始化它們是這樣的:

var groupcn = [All,All,All,All]; 
var grpNameArr = [abc,def,ghi]; 

其他,假設mgroupcn長度,代碼應工作。

然而,較短的解決方案是將數組複製這樣的:

var contain = groupcn.slice(); 
var cmds = grpNameArr.slice(); 
+0

請參閱更新後的帖子 – user1752557

+0

@ user1752557:我看到問題,編輯我的答案。 – Cerbrus

+0

@ user1752557:已編輯。隨着我的改變,代碼的工作方式應該是這樣,'contains'和'cmds'都是有2個條目的數組(因爲你在'#'上分割'groupParam',它只有2個條目。 – Cerbrus

0

你可以使用:

var contain=groupcn.concat(); 
var cmds=grpNameArray.concat(); 
-1

繼錯誤是在代碼

  1. 使用一個循環兩個數組。由於長度不相同,應使用兩個不同的循環。

  2. groupcn變量有錯字錯誤。

檢查這個代碼

<!DOCTYPE html> 
<html> 
<script> 
function chk() 
{ 
    var groupCondition = "ALL-OF-THEM&ALL-OF-THEM&ALL-OF-THEM&ALL-OF-THEM&"; 
    var groupParam = "rsTxTraceMsgAside&rsExpTraceMsgAside&rsTxTraceMsgBside&rsExpTraceMsgBside&#hp1TxTraceMsg&hp1ExpTraceMsg&#"; 



var grpNameArr = groupParam.split("#"); 
var groupcn= groupCondition.split("&"); 

var contain=new Array(); 
var cmds=new Array(); 
var ii; 

for(ii=0;ii<(groupcn.length-1);ii++) 
contain[ii] = groupcn[ii]; 

for(ii=0;ii<(grpNameArr.length-1);ii++) 
cmds[ii] = grpNameArr[ii]; 

alert("groupcn = "+contain); 
alert("grpNameArr = "+cmds); 
} 
</script> 
<body onload="chk()"> 

</body> 
+0

現在'grpNameArr'是隻是對'groupcn'的引用,其中一個數組中的任何內容都會發生更改。 – Cerbrus

+0

請參閱更新後的帖子 – user1752557

+0

@ Cerbrus-請檢查更新後的代碼。 –

相關問題