Javascript 如果数组不';不存在于数组的数组中
我目前正在从事一个小型家庭项目,如果阵列阵列中还不存在所述阵列,我将尝试将一个阵列推入阵列阵列中Javascript 如果数组不';不存在于数组的数组中,javascript,arrays,algorithm,loops,Javascript,Arrays,Algorithm,Loops,我目前正在从事一个小型家庭项目,如果阵列阵列中还不存在所述阵列,我将尝试将一个阵列推入阵列阵列中 var arrayArr = [[1,4]]; function pushArr() { var tempArr = [1, 3]; var tempArr2 = [1, 4]; for(i = 0; i < arrayArr.length, i++) if(!arrayArr.indexOf(tempArr[i])) {
var arrayArr = [[1,4]];
function pushArr() {
var tempArr = [1, 3];
var tempArr2 = [1, 4];
for(i = 0; i < arrayArr.length, i++)
if(!arrayArr.indexOf(tempArr[i])) {
arrayArr.push(tempArr[i]);
} else {
//other logic
}
}
var arrayArr=[[1,4]];
函数pushArr(){
var tempArr=[1,3];
var tempArr2=[1,4];
对于(i=0;i
现在,我知道这个例子在现实世界中没有意义,它只是为了说明我的担忧。如何搜索数组以确保不创建重复的数组
如果你有任何问题,请提问
谢谢 在我的解决方案中,在
isArrayInArray()
中,我循环遍历主数组arrayArr
中的每个元素。然后比较每个给定数组的第一个和第二个元素是否匹配。如果是,那么数组已经被添加,因此它将返回true
var arrayArr=[[1,4]];
pushArray([1,4]);//不会被添加
pushArray([1,3]);//添加
控制台日志(arrayArr);
函数isArrayInArray(arrayToSearch,arrayToFind){
for(设i=0;i }
在我的解决方案中,在isArrayInArray()
中,我循环遍历主数组arrayArr
中的每个元素。然后比较每个给定数组的第一个和第二个元素是否匹配。如果是,那么数组已经被添加,因此它将返回true
var arrayArr=[[1,4]];
pushArray([1,4]);//不会被添加
pushArray([1,3]);//添加
控制台日志(arrayArr);
函数isArrayInArray(arrayToSearch,arrayToFind){
for(设i=0;i }
你知道[1,2]=[1,2]是假的
请参阅您知道[1,2]==1,2]为假
请参考,即使您有以下情况:
let a = [1,2];
let b = [1,2];
a
和b
都包含对具有相同编号的数组的两个不同引用。他们不平等
设a=[1,2];
设b=[1,2];
console.log(a==b)代码>即使您有以下内容:
let a = [1,2];
let b = [1,2];
a
和b
都包含对具有相同编号的数组的两个不同引用。他们不平等
设a=[1,2];
设b=[1,2];
console.log(a==b)代码>试图使答案尽可能简单。基本上,我们正在迭代arrayArr
并检查输入数组的所有元素是否与任何元素数组的所有元素匹配。因此,它应该只是一个嵌套在some
中的every
。但是,如果我们只比较两个元素数组(数组到字符串的转换应该非常快),正如您在回答中所阐明的,那么我将使用字符串比较,如pushArr1
中所示。这是您第一次尝试时的大致方向,因此我将其添加到了我的答案中
var arrayArr=[[1,3,5]];
var tempArr=[1,3,5];
var tempArr2=[1,4];
pushArr1(tempArr);
功能推送器(温度)
{
if(!arrayArr.some)(函数(e){
返回e.every(函数(e1,i)
{
返回e1==温度[i];
})
}))阵列推力(温度);
控制台日志(arrayArr);
}
功能pushArr1(温度)
{
如果(!arrayArr.some(函数(e){returne e.join(“,”===temp.join(“,”}))arrayArr.push(temp);
控制台日志(arrayArr);
}
试图让答案尽可能简单。基本上,我们正在迭代arrayArr
并检查输入数组的所有元素是否与任何元素数组的所有元素匹配。因此,它应该只是一个嵌套在some
中的every
。但是,如果我们只比较两个元素数组(数组到字符串的转换应该非常快),正如您在回答中所阐明的,那么我将使用字符串比较,如pushArr1
中所示。这是您第一次尝试时的大致方向,因此我将其添加到了我的答案中
var arrayArr=[[1,3,5]];
var tempArr=[1,3,5];
var tempArr2=[1,4];
pushArr1(tempArr);
功能推送器(温度)
{
if(!arrayArr.some)(函数(e){
返回e.every(函数(e1,i)
{
返回e1==温度[i];
})
}))阵列推力(温度);
控制台日志(arrayArr);
}
功能pushArr1(温度)
{
如果(!arrayArr.some(函数(e){returne e.join(“,”===temp.join(“,”}))arrayArr.push(temp);
控制台日志(arrayArr);
}[1,4]
和[4,1]
在你的情况下应该被视为平等吗?不,我不认为有必要,因为我有一个有限的数组来推动,它们总是具有相同的顺序。在你的代码中,你在条件方面有一个小错误。请包括
在i
之后,而不是,
漂亮的捕获,只是一个例子:)在你的情况下[1,4]
和[4,1]
应该被视为平等吗?不,我不认为这是必要的,因为我的数组有限,它们总是有相同的顺序。在代码中,在for条件中有一个小错误。请包括
在i
之后,而不是,
Nice catch只是一个例子:)这只测试每个数组的前两个元素是否为m