如何提高我的代码性能以从array-Javascript中获得唯一的值
我的代码在从现有5000个用户数据的数组中获取唯一值时速度非常慢。如何提高我的代码性能以从array-Javascript中获得唯一的值,javascript,performance,Javascript,Performance,我的代码在从现有5000个用户数据的数组中获取唯一值时速度非常慢。 下面是我的代码,它有两个条件: 首先,要获得唯一值 其次,要检查电话号码是否为空,请优先选择现有电话号码的用户数据 var arr = [ ["Wong", ""], ["Wong", "0143213123"], ["Ali", "0177213123"], ["Ali", "0177213123, 0124545345"], ["Ali", ""], ["Imran", "0133454335
下面是我的代码,它有两个条件:
首先,要获得唯一值
其次,要检查电话号码是否为空,请优先选择现有电话号码的用户数据
var arr = [
["Wong", ""],
["Wong", "0143213123"],
["Ali", "0177213123"],
["Ali", "0177213123, 0124545345"],
["Ali", ""],
["Imran", "0133454335"]
];
function uniq(arr) {
var seen = [];
for (i = 0; i < arr.length; i++) {
var a = arr[i][0];
var a2 = arr[i][1];
var c = true;
for (x = 0; x < seen.length; x++) {
var b = seen[x][0];
var b2 = seen[x][1];
if (b == a) {
c = false;
if ((b2.trim() == '' || b2.indexOf(',') == -1) && (a2.trim() != '')) {
seen[x][1] = a2.trim();
break;
}
break;
}
}
if (c == true) {
seen.push(arr[i]);
}
}
return seen;
}
在JSFIDLE中您可以使用reduce执行类似操作,并将每个名称的数据存储在一个对象中
var arr=[“黄”,“黄”,“014312312”,“阿里”,“0177213123”,“阿里”,“0177213123”,“0124545345”,“阿里”,“伊姆兰”,“013344335”],[“阿里”,“伊姆兰”,“013344335”];
var uniq=arr.reduce((r,[名称,编号])=>{
如果(!r[name]| | number.trim().length)r[name]=编号;
返回r;
}, {});
console.log(Object.entries(uniq))
您可以使用reduce执行类似操作,并将每个名称的数据存储在一个对象中
var arr=[“黄”,“黄”,“014312312”,“阿里”,“0177213123”,“阿里”,“0177213123”,“0124545345”,“阿里”,“伊姆兰”,“013344335”],[“阿里”,“伊姆兰”,“013344335”];
var uniq=arr.reduce((r,[名称,编号])=>{
如果(!r[name]| | number.trim().length)r[name]=编号;
返回r;
}, {});
console.log(Object.entries(uniq))
谢谢@Nenad Vracar,我稍后会测试和反馈(y)谢谢@Nenad Vracar,我稍后会测试和反馈(y)
var arr = uniq(arr);
console.log(arr);
[
["Wong", "0143213123"],
["Ali", "0177213123, 0124545345"],
["Imran", "0133454335"]
];