我在Javascript中有这两个数组
var array1 = [
["Tech & Digital", 124],
["Stationery", 100]
]
var array2 = [
["Gift Item", 125],
["Stationery", 100]
]
我想将这个2数组合并为唯一值,如下所示,
[
["Tech & Digital", 124],
["Stationery", 100],
["Gift Item", 125]
]
我尝试了concat
功能,但它没有按预期工作。
答案 0 :(得分:2)
您是否使用嵌套数组来模拟保留顺序的对象?如果是这样,那么写一个容器对象来处理你的排序。
如果没有,您可以使用Underscore或Lo-Dash:
_.uniq(_.union(array1, array2), false, JSON.stringify)
自[1] != [1]
起,您必须手动比较它们。 JSON.stringify
是一种(hacky)方式。
答案 1 :(得分:1)
你知道,我相信其他人可以做一些更有说服力的事情,但这是我使用jquery来刺激它。
var array1 = [
["Tech & Digital", 124],
["Stationery", 100]
]
var array2 = [
["Gift Item", 125],
["Stationery", 100]
]
var obj = {}
jQuery.map(array1.concat(array2),function(i,v){return obj[i[0]] = i[1] })
array1 = jQuery.map(obj, function(j,w){
return [].concat([[w,j]]);
})
这是相同的,但针对非库解决方案进行了修改。在ECMAScript5之前。
var arr = array1.concat(array2), obj = {};
for(var i = 0; i < arr.length; i++){
obj[arr[i][0]] = arr[i][1];
}
array1 = function() {
var arr = [];
for(key in obj){
arr.push([[key,obj[key]]])
}
return arr;
}()
都返回:
[["Tech & Digital", 124], ["Stationery", 100], ["Gift Item", 125]]