按值来相比介绍与应用,js判定多少个字符串是不是带有二个子串的主意

按值和按引用的比较
Numbers 和 Boolean 类型的值 (true 和 false)
是按值来复制、传递和比较的。当按值复制或传递时,将在计算机内存中分配一块空间并将原值复制到其中。然后,即使更改原来的值,也不会影响所复制的值(反过来也一样),因为这两个值是独立的实体。

本文实例讲述了js判断一个字符串是否包含一个子串的方法。分享给大家供大家参考。具体如下:

对象、数组以及函数是按引用来复制、传递和比较的。
当按地址复制或传递时,实际是创建一个指向原始项的指针,然后就像拷贝一样来使用该指针。如果随后更改原始项,则将同时更改原始项和复制项(反过来也一样)。实际上只有一个实体;“复本”并不是一个真正的复本,而只是该数据的又一个引用。

在我们前端日常开发中,经常会遇到判断一个字符串中是否包含某个子串,这里我们将去探究一些解决此种需求的方法以及正确的使用它们。理想情况下,我们要找的是一个能匹配我们的目的(if
x contains y)的方法,并返回true或false。

当按引用比较时,要想比较成功,两个变量必须参照完全相同的实体。例如,两个不同的
Array
对象即使包含相同的元素也将比较为不相等。要想比较成功,其中一个变量必须为另一个的参考。要想检查两个数组是否包含了相同的元素,比较
toString() 方法的结果。

一、String.prototype.indexOf和String.prototype.lastIndexOf

最后,字符串是按引用复制和传递的,但是是按值来比较的。请注意,假如有两个
String 对象(用 new String(“something”)
创建的),按引用比较它们,但是,如果其中一个或者两者都是字符串值的话,按值比较它们。

这两个方法,可能是我们最容易想到的,如果包含子串,则返回大于等于0的索引,否则返回-1,没有达到我们的理想情况。

字符串是按引用复制和传递的,但是是按值来比较的。请注意,假如有两个
String 对象(用 new String(“something”)
创建的),按引用比较它们,但是,如果其中一个或者两者都是字符串值的话,按值比较它们。

复制代码 代码如下:

复制代码 代码如下:

var str    = “My blog name is Benjamin-专注前端开发和用户体验”,
    substr = “Benjamin”;
 
function isContains(str, substr) {
    return str.indexOf(substr) >= 0;
}
 
//true
console.log(isContains(str, substr));

var str1=”aa”;
var str2=new String(“aa”);
var str3=str2;
function test(p){
var str4=p;
console.log(str4===str2);
}
console.log(str1===str2); //false
console.log(str3===str2); //true
test(str1);//false
test(str2);//true

二、String.prototype.search

您可能感兴趣的文章:

  • javascript中比较字符串是否相等的方法
  • js去字符串前后空格5种实现方法及比较
  • javascript
    两个字符串比较函数
  • js处理json以及字符串的比较等常用操作
  • JavaScript
    解析Json字符串的性能比较分析代码
  • 浅谈JS中的三种字符串连接方式及其性能比较
  • js字符串截取函数slice、substring和substr的比较
  • JS实现的用来对比两个用指定分隔符分割的字符串是否相同
  • JS实现快速比较两个字符串中包含有相同数字的方法

我们想到了String.prototype.search方法,因search方法的参数是一个正则表达式,所以和indexOf的情况相同。

复制代码 代码如下:

var str    = “My blog name is Benjamin-专注前端开发和用户体验”,
    substr = “Benjamin”;
 
function isContains(str, substr) {
    return new RegExp(substr).test(str);
}
 
//true
console.log(isContains(str, substr));

这个方法比indexOf方法看起来好点,该方法直接返回true or
false,同时方法名称test比indexOf更有语义性。