为什么我需要一个位运算符来访问最后一个数组元素?

本尼迪克特

我有以下代码应该在这样的数组中找到两个字符串之间的交点,["1, 3, 4, 7, 13", "1, 2, 4, 13, 15"]它应该给出结果:1,4,13

  function FindIntersection(strArr) { 

    const firstArr = strArr[0].split(", ");
    const secondArr = strArr[1].split(", ");

    let newArr = [];
    let i = 0;
    let j = 0;


    while(i < firstArr.length && j < secondArr.length) {
      let a = firstArr[i] | 0;
      let b = secondArr[j] | 0;
      if(a === b) {
        newArr.push(a);
        i++;
        j++;
      } else if(a > b) {
        j++;
      } else if (b > a) {
        i++;
      }
    }

    strArr = newArr.join(",");

    return strArr; 

}

当我不使用按位运算符时| 0,为什么不能正确访问数组中的最后一个元素?按位运算符如何解决此问题?

达夫扎兹

您不需要显式的按位运算符,只需将其转换为整数即可。如评论中所述,这只是触发将字符串转换为整数的一种方法。

typeof('str' | 0) === 'number'

但这很糟糕,因为'str'可能存在错误。我会更明确地使用:

let a = parseInt(firstArr[i], 10);

这将返回NaN如果它不是一个有效的整数,NaN === NaNfalse,这样你就不会不小心将它添加到newArr

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

需要一个ContentProvider来访问SharedPreferences

使用变量作为名称来访问另一个数组的嵌套元素

使用列表理解来访问最后一个列表元素

为什么这个数组的最后一个元素被拼接而不是中间的一个?

按位 AND 运算符 - 是否用于递减前一个位间隔?

一个网站有一个 URL 列表,我需要编写一个循环来访问每个 URL 并抓取两个表

使用$ slice运算符获取数组的最后一个元素

为什么在计算后缀最后一个运算符时会出错?

我可以编写一个Twig Extension来访问循环中的上一个和下一个元素

当我尝试对一个数字加一个矩阵求和时,为什么运算符重载失败?(但它的工作方式相反)

Swift-为什么我的JSON对象元素仅添加最后一个数组元素?

为什么我的条件运算符给我一个错误?

我可以通过一个参数使用强制转换来访问多维数组吗?

为什么在Scala中使用'〜'运算符会给我一个负值

为什么我不能有一个纯粹的虚拟赋值运算符?

为什么我不能创建一个名为 '!' 的后缀运算符

为什么我们使用另一个继承活页夹类的类来访问BoundServices?

为什么我的代码只比较数组的第一个和最后一个数字 - Java

为什么switchMap运算符与promise一起使用时仅发出最后一个值?

为什么我需要添加双引号来打印java中char数组的第一个和最后一个元素

为什么我不能使用间接操作符取消对一个对象的指针,该对象是一个数组元素?

为什么我们可以分配一个1 PB(10 ^ 15)的数组并访问最后一个元素,但是不能释放它呢?

如果我只能创建一个数组,为什么需要动态内存分配?

需要写一个强制转换运算符

如何通过将数字添加到数组“名称”(即存储第一个元素的地址的常量指针)来访问数组的元素?

为什么在Quicksort中进行分区之前将枢轴元素移动到数组的第一个或最后一个位置?

为什么我只能在while循环之外获取数组的最后一个元素

为什么我只能引用传递给onClickListener的TextView数组中的最后一个元素

为什么C ++运算符重载需要“至少具有一个类类型的参数”?