js中new 了两个Object数组。怎么样将数组内容合并,重复的内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中new 了两个Object数组。怎么样将数组内容合并,重复的内容?相关的知识,希望对你有一定的参考价值。

ARR1=[[1],[2],[3],[4]];
ARR2=[3],[4],[5],[6]];

怎么才能让得到的ARR3=[[1],[2],[3],[4],[5],[6]];
也就是去掉多余重复的?

参考技术A <script language="javascript">
<!--
//去掉数组 重复的项
Array.prototype.unique = function()

var a = ;
for(var i=0; i<this.length; i++)

if(typeof a[this[i]] == "undefined")
a[this[i]] = 1;

this.length = 0;
for(var i in a)
this[this.length] = i;
return this;

var ARR1=[[1],[2],[3],[4]];
var ARR2=[[3],[4],[5],[6]];
var ARR3=ARR1.concat(ARR2);
ARR3=ARR3.unique();
alert(ARR3);
//-->
</script>

把这些代码丢到你网页他就会出现你要的。
参考技术B 如果是普通数据类型, 非常简单

var ARR1=[1,2,3,4];
var ARR2=[3,4,5,6];

function mergeArray(arr1, arr2)
var _arr = [];
for (var i = 0; i < arr1.length; i++)
_arr.push(arr1[i]);

var _dup;
for (var i = 0; i < arr2.length; i++)
_dup = false;
for (var _i = 0; _i < arr1.length; _i++)
if (arr2[i] === arr1[_i])
_dup = true;
break;


if (!_dup)
_arr.push(arr2[i]);



return _arr;


var b = mergeArray(ARR1, ARR2);
//b = [1, 2, 3, 4, 5, 6]
//楼上的方法得到的是['1','2','3','4','5'], 转换成字符串了

如果是复杂对象及数组, 则稍微麻烦一些, 需要序列化后比较

Object.prototype.Serialize = function()

var type = __typeof__(this);
switch(type)

case 'Array' :

var strArray = '[';
for ( var i=0 ; i < this.length ; ++i )

var value = '';
if ( this[i] )

value = this[i].Serialize();

strArray += value + ',';

if ( strArray.charAt(strArray.length-1) == ',' )

strArray = strArray.substr(0, strArray.length-1);

strArray += ']';
return strArray;

case 'Date' :

return 'new Date(' + this.getTime() + ')';

case 'Boolean' :
case 'Function' :
case 'Number' :
case 'String' :

return this.toString();

default :

var serialize = '';
for ( var key in this )

if ( key == 'Serialize' ) continue;
var subserialize = 'null';
if ( this[key] != undefined )

subserialize = this[key].Serialize();

serialize += '\r\n' + key + ' : ' + subserialize + ',';

if ( serialize.charAt(serialize.length-1) == ',' )

serialize = serialize.substr(0, serialize.length-1);

serialize += '\r\n';
return serialize;


;
Object.prototype.Equal = function(o)
return this.Serialize() == o.Serialize();
;

function mergeArray(arr1, arr2)
var _arr = [];
for (var i = 0; i < arr1.length; i++)
_arr.push(arr1[i]);

var _dup;
for (var i = 0; i < arr2.length; i++)
_dup = false;
for (var _i = 0; _i < arr1.length; _i++)
if (arr2[i].Equal(arr1[_i]))
_dup = true;
break;


if (!_dup)
_arr.push(arr2[i]);



return _arr;


//注意: 序列化的对象不能包含循环引用的情况, 否则会出现无限递归的情况, 导致浏览器假死本回答被提问者采纳
参考技术C ARR3=ARR1.concat(ARR2); //即可得到所需

两个数组如何对应相加js

参考技术A 通过concat方法进行数组合并.

varmergeTo=[4,5,6],mergeFrom=[7,8,9];定义2个要合并的数组mergeTo和mergeFrommergeTo=mergeTo.concat(mergeFrom);mergeTo的结果是[4,5,6,7,8,9]

concat()方法用于连接两个或多个数组。

该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

语法

arrayObject.concat(arrayX,arrayX,......,arrayX)

参数

描述

arrayX必需。

该参数可以是具体的值,也可以是数组对象。

可以是任意多个。

返回值

返回一个新的数组。

该数组是通过把所有arrayX参数添加到arrayObject中生成的。

如果要进行concat()操作的参数是数组,那么添加的是数组中的元素,而不是数组。

以上是关于js中new 了两个Object数组。怎么样将数组内容合并,重复的内容?的主要内容,如果未能解决你的问题,请参考以下文章

js 中 new Array() var a={} var a=[] new Object()

thinkphp5 select对象怎么转数组

thinkphp5 select对象怎么转数组

请问object中有个数组,在js中怎么强转转成list的类型

js定义了一个数组,在控制台输出,第一次打开控制台时显示的是数组,刷新一下怎么就变成object了

js如何把object怎么转化数组,并取出object中的值