我不知道如何使用它从主数组中删除重复的数组。请考虑以下事项:
UPDATE table_name SET field = REPLACE(field, ' ', 'My text')
结果数组应如下所示:
var arr = [
[0, 1],
[0, 1],
[2, 1],
];
文档对单个元素数组有意义,但不适用于2d数组。
思想吗
要转换为唯一的数组可能包含:
var arr = [
[0, 1],
[2, 1],
];
数组中的数组应该比较所有值,所以在上面的例子中,它应该吐出:
var arr = [
[0, 1]
[0, 2]
[0, 3]
[0, 1]
[2, 1]
]
副本为var arr = [
[0, 1]
[0, 2]
[0, 3]
[2, 1]
]
答案 0 :(得分:3)
最简单的方法可能是使用uniq
方法,然后将内部数组转换为某些字符串表示形式,JSON.stringify
应该是足够好的解决方案。
var arr = [[0, 1], [0, 2], [0, 3], [0, 1], [2, 1]]
_.uniq(arr, function(item) {
return JSON.stringify(item);
});
// [[0,1], [0,2], [0,3], [2,1]]
答案 1 :(得分:2)
您可以使用.uniq
中的lodash
功能:
var arr = [
[0, 1],
[0, 1],
[2, 1],
]
var uniqueList = _.uniq(arr, function(item, key, a) {
return item.a;
});
生成的数组如下所示:
//var arr = [Object: [0, 1], Object: [2, 1]];
答案 2 :(得分:0)
它没有使用lodash,未经优化我同意:
//remove duplicate array of array of arrays
Array.prototype.uniqueArray = function() {
var uniqObj = {};
this.forEach(function (item) {
uniqObj[JSON.stringify(item)] = 1;
});
var uniqArray = [];
for(var key in uniqObj) {
if (uniqObj.hasOwnProperty(key)) {
uniqArray.push(JSON.parse(key))
}
}
return uniqArray;
};
答案 3 :(得分:-1)
当然,强制转换为JSON可行,但是感觉我们可能正在浪费资源。我在Node.js中使用以下Lodash代码:
const _ = require("lodash");
var arr = [
[0, 1],
[0, 1],
[2, 1],
];
var uni = _.uniqWith(arr, _.isEqual);
console.log(uni);
像魅力一样check the Repl here。有关uniqWith at the Lodash docs的更多信息。