gpt4 book ai didi

javascript - 检查 JS 数组中是否存在元素更好,还是添加它然后运行 ​​_.uniq 更好?

转载 作者:行者123 更新时间:2023-11-29 23:51:56 24 4
gpt4 key购买 nike

假设您有一个唯一值数组,并希望从另一个数组中推送满足条件的新元素,而不创建重复元素。例如

newArray.forEach(function(element){
if (condition) {
oldArray.push(element);
}
})

关于 Javascript 的性能,在循环的每次迭代中检查元素是否在推送到数组之前已经存在,或者添加所有满足条件的元素,然后运行 ​​_.来自 underscore.js 的 uniq?

newArray.forEach(function(element){
if (condition && !oldArray.includes(element)) {
oldArray.push(element);
}
})

对比:

newArray.forEach(function(element){
if (condition) {
oldArray.push(element);
}
})
oldArray = _.uniq(oldArray);

也许它对小型项目(和数组)并没有什么影响,但我想知道什么对大型项目最好。

最佳答案

_.uniq(oldArray);

将执行数组的另一个循环,因此假设数组由数千个元素组成,第一个解决方案肯定更好。

可能更有用的是使用 indexOf 而不是 includes,事实上,在 includes 函数内部生成了一个 indexOf:

newArray.forEach(function(element){
if (condition && oldArray.indexOf(element)===-1) {
oldArray.push(element);
}
})

你怎么看,包含的原型(prototype)是:

String.prototype.includes = function(search, start) {
'use strict';
if (typeof start !== 'number') {
start = 0;
}

if (start + search.length > this.length) {
return false;
} else {
return this.indexOf(search, start) !== -1;
}
};

关于javascript - 检查 JS 数组中是否存在元素更好,还是添加它然后运行 ​​_.uniq 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42623262/

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