gpt4 book ai didi

javascript - 如何 - 提高代码性能以从数组中获取唯一值 - Javascript

转载 作者:行者123 更新时间:2023-11-28 17:25:42 25 4
gpt4 key购买 nike

当从现有 5000 个用户数据的数组中获取唯一值时,我的代码速度性能非常慢。

下面是我的代码,它有两个条件:

一、获得独特的值(value)

其次,检查电话号码是否为空,优先考虑现有电话号码的用户数据。

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;
}

代码执行后的结果:

var arr = uniq(arr);
console.log(arr);

[
["Wong", "0143213123"],
["Ali", "0177213123, 0124545345"],
["Imran", "0133454335"]
];

在 jsfiddle here

最佳答案

您可以通过减少数据并将每个名称的数据存储在一个对象中来执行类似的操作。

var arr = [["Wong",""], ["Wong", "0143213123"], ["Ali", "0177213123"], ["Ali", "0177213123, 0124545345"], ["Ali", ""], ["Imran", "0133454335"]];

var uniq = arr.reduce((r, [name, number]) => {
if(!r[name] || number.trim().length) r[name] = number;
return r;
}, {});

console.log(Object.entries(uniq))

关于javascript - 如何 - 提高代码性能以从数组中获取唯一值 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51669300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com