gpt4 book ai didi

javascript - 比较两个数组值,如果不匹配则填充

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

我需要帮助来匹配两个数组。我在示例代码中使用了 TypeScript,但它或多或少是关于数组操作的,因此可以理解。

简而言之:

我有两个数组; myItems[]allItems[]myItems[] 最多只能保存 4 个值。

我想首先检查 myItems[] 中的项目是否为 4,和/或是否存在于另一个数组 allItems[] 中。

如果不是:用 allItems[] 中的值填充 myItems[](直到它包含 4 个值)和/或替换缺少的项目(相对于 allItems []) 与 allItems[] 中的其他项目(我尝试使用默认值,而不是在我的示例代码中随机取值)。

描述:

我有一个小部件(快速链接)模块,一次显示 4 个链接,但总共有 20 个不同的链接(或更多)。所有链接都存储在一个列表中,每个链接都有自己唯一的 ID。在代码中,所有链接都被提取并返回到一个数组中(如上例中的 allItems[])。

用户可以保存他/她想在小部件中显示的链接。用户设置以数组的形式存储和返回,其中包含用户保存的链接的 ID。像上面的 myItems[]

问题:

我有一个解决方案可以检查 myItems[] 的长度,如果需要,可以从 allItems[] 中填充项目。但是,它不会检查用户数组中的项目是否存在于 allItems[] 中,然后使用默认链接填充它。实际上,这意味着用户可以保存链接,并且它将按预期显示在小部件中。但是如果列表中的链接被删除(然后将在 allItems 数组中删除)只有 3 个项目将显示为 myItems[] 不检查allItems[] 数组以查看它是否存在。

代码:

    public async getUserWidgets(): Promise<Widget[]> {

let allWidgets = await this.getAllWidgets(); //Array with all the links ID from the list

let userRepository = new UserProfileRepository(this.absoluteWebUrl);

let userSettings = await

userRepository.getUserExtensionValues(this.context); //Extracting the user Settings which contains the ID of the saved linksvar

result:Widget[] = []; //the array where the result will go in



//if the user doesnt have any saved links, or if the user have less than 4 saved links



if (userSettings == null || userSettings.QuickLinksWidgets == null ||
userSettings.QuickLinksWidgets.length < 4)

{result = allWidgets.filter((w) => {return w.defaultWidget;}).slice(0,4);



}

else {var ids =userSettings.QuickLinksWidgets;



for (let i = 0; i < 4; i++) {

let id = '' + ids[i];let w = allWidgets.filter((e) => { return e.id == id;});

if (w.length == 0) {

continue;}



result.push(w[0]);}}

return new Promise<Widget[]>(async (resolve) => {resolve(result);});}

最佳答案

检查数组是否包含值的一种简单方法是使用 includes() 方法。

for(let value of myitems){
if(allitems.includes(value)){
console.log("Duplicate")
}
}

以上代码将遍历 myitems 数组中的每个值,并测试该值是否在 allitems 数组中。

关于javascript - 比较两个数组值,如果不匹配则填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56118967/

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