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

时间:2019-05-13 19:46:56

标签: javascript reactjs typescript

我需要匹配两个数组的帮助。我在示例代码中有TypeScript,但可以理解,因为它或多或少地涉及数组操作。

简而言之:

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

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

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

说明:

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

用户可以将他/她想要显示的链接保存在窗口小部件中。用户设置将被存储并作为具有用户已保存链接的ID的数组返回。像上面的allItems[]

问题:

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

代码:

allItems[]

1 个答案:

答案 0 :(得分:1)

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

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

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