如果数组在数组的数组中不存在,则将其推入数组中。

15 浏览
0 Comments

如果数组在数组的数组中不存在,则将其推入数组中。

我目前正在进行一个小的家庭项目,并且我正在尝试将一个数组推入到一个数组的数组中,如果该数组在数组的数组中不存在。\n

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
        }
  } 

\n现在,我知道这个例子在现实世界中并没有实际意义,它只是为了说明我的担忧。我该如何搜索一个数组的数组,以确保我不会创建重复项。\n如果您有任何问题,请提问。\n谢谢!

0
0 Comments

问题的出现原因是,即使两个数组具有相同的数字,它们仍然是两个不同的引用。因此,我们不能使用"==="操作符来判断它们是否相等。

为解决这个问题,我们可以定义一个函数"arrayCanBePushed",在将一个数组添加到数组的数组之前,调用该函数。该函数的作用是判断数组是否可以被添加。如果返回值为true,我们可以继续执行添加操作。

解决方法的代码如下:

var arrayOfArrays = [[1,2],[2,3],[3,4,5],[7]];
function arrayCanBePushed(arr){
    return !arrayOfArrays.filter(a => a.length === arr.length)
                         .some(a => a.every(ele=>arr.includes(ele)));
}
console.log(arrayCanBePushed([1,2]));
console.log(arrayCanBePushed([1,2,3]));

以上代码中,"arrayCanBePushed"函数采用了以下步骤:

1. 使用"filter"方法筛选出和待添加数组长度相同的数组。

2. 对筛选出的数组使用"some"方法进行迭代,判断待添加数组的每个元素是否都包含在该数组中。

3. 如果存在一个数组满足上述条件,即待添加数组不能被添加,返回false;否则返回true。

在上述代码中,第一个"console.log"输出结果为false,因为[1,2]已经存在于数组的数组中。而第二个"console.log"输出结果为true,因为[1,2,3]可以被添加到数组的数组中。

0
0 Comments

在JavaScript中,当我们比较两个数组是否相等时,我们会遇到一个问题:[1,2] === [1,2] 的结果是false。这是因为在JavaScript中,数组是引用类型,而不是值类型。所以当我们比较两个数组时,实际上是在比较它们的引用,而不是它们的值。

为了解决这个问题,我们可以使用一些方法来比较两个数组是否相等。以下是一些常见的方法:

1. 使用JSON.stringify()方法:我们可以使用JSON.stringify()方法将数组转换为字符串,然后再比较字符串是否相等。例如:

var arr1 = [1,2];
var arr2 = [1,2];
if(JSON.stringify(arr1) === JSON.stringify(arr2)){
  console.log("Arrays are equal");
} else {
  console.log("Arrays are not equal");
}

2. 使用循环和比较运算符:我们可以使用循环遍历两个数组,并使用比较运算符逐个比较数组中的元素。例如:

var arr1 = [1,2];
var arr2 = [1,2];
var equal = true;
if(arr1.length !== arr2.length){
  equal = false;
} else {
  for(var i=0; i

以上是解决比较两个数组是否相等的常见方法。然而,有时候我们还需要解决另一个问题:将一个数组添加到一个数组的数组中,但是只有当这个数组在数组的数组中不存在时。下面是一个解决这个问题的方法:

var arrays = [[1,2],[3,4],[5,6]];
var arrayToAdd = [7,8];
var exists = false;
for(var i=0; i

以上代码首先遍历数组的数组,使用JSON.stringify()方法将数组转换为字符串进行比较,如果找到了相同的数组,则将exists标记为true。然后,如果exists为false,则将arrayToAdd添加到数组的数组中。

通过以上的解决方法,我们可以比较两个数组是否相等,并且可以将一个数组添加到一个数组的数组中,但是只有当这个数组在数组的数组中不存在时。这些方法可以帮助我们处理在JavaScript中处理数组的一些常见问题。

0
0 Comments

在这个解决方案中,问题是在isArrayInArray()函数中,循环遍历主数组arrayArr的每个元素。然后比较每个给定数组的第一个和第二个元素是否匹配。如果匹配,说明该数组已经添加过了,所以函数会返回true。

解决这个问题的方法是使用一个循环来遍历主数组,然后使用if语句来比较每个子数组的第一个和第二个元素是否与给定数组的第一个和第二个元素匹配。如果匹配,说明该数组已经存在于主数组中,函数返回true。如果循环结束后都没有找到匹配的子数组,函数返回false。

pushArray()函数中,首先调用isArrayInArray()函数来检查给定数组是否已经存在于主数组中。如果不存在,就使用arrayArr.push(array)将给定数组添加到主数组中。

这个解决方案只测试每个数组的前两个元素是否匹配,是吗?也就是说,对于长度为3或更长的数组是不起作用的。

是的!这是在假设数组只有两个元素的情况下完成的。如果OP需要,我可以修改函数 🙂

是的,我只是想确保OP在使用这个函数时明确一些;它可能确实是他们所需要的。

正是我需要的,我的数组每次只包含两个元素,所以这非常合适。非常感谢!

0