gpt4 book ai didi

javascript - 如何在不重复的情况下将字符串添加到列表中

转载 作者:搜寻专家 更新时间:2023-10-30 21:20:55 24 4
gpt4 key购买 nike

我不知道如何在添加之前检查我的变量或它的重复项是否已经在列表中。

让我们以列表为例:

LIST = ['TestA', 'TestB', 'TestC (AZE)', 'TestB (#2)']

  • 如果我想添加“TestA”,那么我会添加“TestA (#2)”。

  • 如果我想添加 'TestB' 或 'TestB (#X)',其中 X 是任意数字,然后我添加“TestB (#3)”,因为已经存在重复项,重复项的编号将为 3

  • 如果我想添加“TestC (AZE)”,那么我添加“TestC (AZE) (#2)”。

我开始这样做:

VARIABLE = "TestB"

if(this.LIST.includes(VARIABLE)) {
this.LIST.push(VARIABLE + " (#2)");
} else {
this.LIST.push(VARIABLE);
}

问题是,如果我多次添加“TestB”,则会添加多个“TestB (#2)”。

如果有人能帮我把它付诸实践,谢谢。

最佳答案

使用另一个对象来跟踪到目前为止每个字符串出现的次数:

LIST = [];

const counts = {};
function addToList(item) {
counts[item] = (counts[item] || 0) + 1;
LIST.push(item + (counts[item] === 1 ? '' : ' (#' + counts[item] + ')'));
}

addToList('foo');
addToList('foo');
addToList('bar');
addToList('baz');
addToList('bar');
addToList('foo');
console.log(LIST);

要么确保 addToList 没有使用 (# 后缀调用,要么首先去除 (# 后缀,例如:

LIST = [];

const counts = {};
function addToList(item) {
const trailingMatch = item.match(/ \(#\d+\)$/);
if (trailingMatch) {
item = item.slice(0, item.length - trailingMatch[0].length);
}
counts[item] = (counts[item] || 0) + 1;
LIST.push(item + (counts[item] === 1 ? '' : ' (#' + counts[item] + ')'));
}

addToList('foo');
addToList('foo');
addToList('bar');
addToList('baz');
addToList('bar');
addToList('foo');
addToList('foo (#2)');
console.log(LIST);

关于javascript - 如何在不重复的情况下将字符串添加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57971450/

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