<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>
<script>function ccc(){
    alert("改变之前"+aa[0].id)
}function aaa(aa1){
  var dd=aa1.concat();
   dd[0].id="xxxx";
   alert(aa[0].id);
}
function bbb(){
   aaa(aa);
}
var json = {
id :"1",
text : "2",
value : "3"
};
 var aa=new Array();
 aa[0]=json;</script>
 <BODY>
  <input type="button" onclick="bbb()" value="改变">
  <input type="button" onclick="ccc()" value="值">
 </BODY>
</HTML>  我只是想把json数组当做一个变量传递 在方法里将其复制给另外一个数组 ,另外一个数组修改而不改变原来数组的值,可是我这里虽然运用了concat 复制数组而不影响原来的值 可还是没反应 大家帮帮忙

解决方案 »

  1.   

    concat 方法 (Array)
    请参阅
    concat 方法 (String) | join 方法 | String 对象应用于: Array 对象
    要求
    版本 3
    返回一个新数组,这个新数组是由两个或更多数组组合而成的。array1.concat([item1[, item2[, . . . [, itemN]]]])
    参数
    array1 
    必选项。其他所有数组要进行连接的 Array 对象。 
    item1,. . ., itemN 
    可选项。要连接到 array1 末尾的其他项目。 
    说明
    concat 方法返回一个 Array 对象,其中包含了 array1 和提供的任意其他项目的连接。要加的项目(item1 … itemN)会按照从左到右的顺序添加到数组。如果某一项为数组,那么添加其内容到 array1 的末尾。如果该项目不是数组,就将其作为单个的数组元素添加到数组的末尾。以下为从源数组复制元素到结果数组: 对于从正被连接到新数组的数组中复制的对象参数,复制后仍然指向相同的对象。不论新数组和源数组中哪一个有改变,都将引起另一个的改变。 
    对于连接到新数组的数值或字符串,只复制其值。一个数组中值有改变并不影响另一个数组中的值。 
      

  2.   

    一楼可能把我意思理解错误了,一般的数值用concat组成的新数组是不会改变原来值的 我测试过,只是我现在的数组是一个json格式组成的数组,我应该怎么弄才能在新的数组里不改变原来的值 我那里弹出的结果是 "xxxx" 其实我想要的结果是 "1" 还是原来那个 不改变原来的值