gpt4 book ai didi

Javascript - 比较两个数组。如果在两者中都找到对象,请更改它

转载 作者:行者123 更新时间:2023-11-30 11:15:58 25 4
gpt4 key购买 nike

我可以使用以下代码检查一个数组的对象是否也存在于另一个数组中(并在其自己的数组中显示重复项):

var target = ['alfredo', 'john', 'sebas', 'paul', 'lionel', 'sebas2'];
var src = ['paul', 'michael', 'sebas'];

var final = target.filter(function(val) {
return src.indexOf(val) != -1;
});

console.log(final);

期望的输出:

但是,我不知道如何获得以下输出:

final = Array ["paul2", "michael", "sebas3"]

数组 final 中的对象应该与数组 src 中的原始顺序相同,但是,如果对象也在数组 target 中找到> 一个数字(从 2 开始)应该附加到这个复制的对象上。如果 name + number 存在,数字必须增加 1,直到在 target

中找不到该值

到目前为止我的尝试:

var final= [];

src.forEach(function(element) {
if(target.includes(element))
{ newSrc = element+2; final.push(newSrc) } else { final.push(element) }
});

console.log(final);

但是,我不知道如何处理 number + 1 部分而不重复循环等。

最佳答案

您可以先计数,然后将名称与调整后的计数进行映射。

var target = ['alfredo', 'john', 'sebas', 'paul', 'lionel', 'sebas2'],
src = ['paul', 'michael', 'sebas'],
count = target.reduce((c, s) => (k => (c[k] = (c[k] || 0) + 1, c))(s.match(/^\D+/)[0]), Object.create(null)),
final = src.map(s => s + (count[s] ? count[s] + 1 : ''));

console.log(final);

关于Javascript - 比较两个数组。如果在两者中都找到对象,请更改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51523139/

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