深切浅析JavaScript字符串操作方法,javascript检查有个别成分在数组中的索引值

URLSearchParams 接口定义了有个别实用的章程来处理 U兰德酷路泽L 的询问字符串。

wp_parse_args() 函数是 WordPress
核清热解毒常利用的函数,它的用途很多,但最注重用来给三个数组参数(args)绑定默许值。

在于今代浏览器中判断贰个因素在不在1个数组中,我们能够用Array对象的indexOf()方法来博取那一个因素在此时此刻数组中的索引值,若索引值不等于-1,数组中就存在那些因素,

在截取字符串时平时会用到substr()、substring()、slice()方法,有时混淆之间的用法,故总括下。

U凯雷德LSearchParams()是个构造函数,将回来贰个得以操作查询字符串的靶子。

因为 wp_parse_args()
函数再次回到的早晚是一个数组,所以她会把传播查询字符串和目的(object)自动转换到数组,给了使用者特别方便人民群众的口径,也加码了包容性。

例如:

开卷目录
•slice()
•substring()
•substr()
•总结 

常用方法:

常见的 query_posts()、wp_list_comments() 和 get_terms() 函数都利用了
wp_parse_args() 函数来帮它给数组参数添加暗许值。

var arr = [2,53,23,'test',9,'array'];
//判断array在不在数组arr中
arr.indexOf('array') !== -1 ? alert('存在') : alert('不存在');
但是IE9以前的版本都不支持此方法,那咱们就只能扩展一个:
 代码如下复制代码
Array.prototype.indexOf = function(el){
 for (var i=0,n=this.length; i<n; i++){
 if (this[i] === el){
  return i;
 }
 }
 return -1;
}

slice()

① 、构造查询字符串

const query = new URLSearchParams();
query.append("a", 1);
query.append("b", 2);
const queryString = query.toString(); // "a=1&b=2"
const url = `https://www.abc.com?${query}`; // 将自动调用query的toString()方法

用法

上边我们就来检查和测试一下依次浏览器的包容性,代码如下:

概念:接受叁个或许五个参数,第一个参数钦点子字符串的启幕地点。第二个参数表示子字符串的甘休地点(不包蕴结束地方的不行字符),假如没有传递首个参数,则将字符串的长度作为完毕地点。

② 、获取查询字符串参数

// current url: https://www.abc.com?a=1&b=2 
const query = new URLSearchParams(location.search);
query.get("a"); // "1"
query.get("b"); // "2" 
query.getAll("a"); // ["1"] 
wp_parse_args( $args, $defaults );
var arr = [2,53,23,'test',9,'array'];
if(!Array.indexOf){
  Array.prototype.indexOf = function(el){
 for (var i=0,n=this.length; i<n; i++){
 if (this[i] === el){
  return i;
 }
 }
 return -1;
   } 
}
arr.indexOf('array') !== -1 ? alert('存在') : alert('不存在');

① 、传递参数为正值景况:

深切浅析JavaScript字符串操作方法,javascript检查有个别成分在数组中的索引值。兼容性:

包容性较差

建议选择polyfill:

来源:

参数

地方就是用Array的indexOf方法来判断数组中1个要素是或不是留存的艺术。

var str ="helloWorld";
// 一个参数,则将字符串长度作为结束位置
alert(str.slice(3)); // "loWorld"
// 两个参数,7位置上的字符为"r",但不包括结束位置的字符
alert(str.slice(3,7)); // "loWo" 

澳门葡京,$args

Array的原生方法:

② 、传递参数为负值的事态:

(数组 | 字符串)(必须)查询字符串、对象大概数组参数,用来绑定暗中同意值。

concat(): 连接三个或更加多的数组哦
join(): 把数组的保有因素放在三个字符串中
pop():删除并赶回数组的末尾三个成分
push():向数组的最后添加1个成分,并回到数首席营业官度。
reverse():颠尾数组中的成分顺序
shift(): 删除并回到数组的第②个因素。
slice():重返已选定的成分
sort():对数组的要素实行排序
splice():删除成分,并向数组添加新因素。
toSource():再次回到该对象的源代码
toString():把数组转换为字符串,并再次来到结果
valueOf():重返数组对象的原始值。

slice()方法会将传入的负值与字符串长度相加。
 var str ="helloWorld";
// 一个参数,与字符串长度相加即为slice(7)
alert(str.slice(-3)); // "rld"
// 两个参数,与字符串长度相加即为slice(3,6)
alert(str.slice(3,-4)); // "loW" 

默认值:None

你或然感兴趣的小说:

  • js使用for循环查询数组中是或不是留存有些值
  • javascript兑现查找数组中最大值方法汇总
  • javascript
    折半查找字符在数组中的地点(有系列表)
  • JavaScript使用二分查找算法在数组中寻觅数据的格局
  • JS查找数组中另行成分的办法详解
  • 行使JavaScript怎么着询问某些值是不是数组内

三 、第3个参数比第三个参数值小的情景:

查询字符串:

slice()方法传入的第二个参数比首个参数小的话,则赶回空字符串。

type=post&posts_per_page=5&cat=1
var str ="helloWorld";
alert(str.slice(5,3)); // "" 

数组:

4、IE兼容性

array( 'type' => 'post', 'posts_per_page' => 5, 'cat' => '1' )

在IE8浏览器测试下,没啥难题,行为与当代浏览器同样。

$defaults

substring()

(数组)(可选)数组参数的暗中同意参数。

概念:接受一个恐怕七个参数,第贰个参数钦点子字符串的开首地点。第③个参数表示子字符串的了断位置(不包蕴结束地方的十分字符),假如没有传递第二个参数,则将字符串的尺寸作为实现地方。

默许值:空字符串

一 、传递参数为正值景况:与slice()方法行为同样的

例子

var str ="helloWorld";
// 一个参数,则将字符串长度作为结束位置
alert(str.substring(3)); // "loWorld"
// 两个参数,7位置上的字符为"r",但不包括结束位置的字符
alert(str.substring(3,7)); // "loWo" 
function explain_parse_args( $args = array() ){

  //$args 的默认值
  $defaults = array(
    'before' => '<div class="box">',
    'after' => '</div>',
    'echo' => true,
    'text' => 'wp_parse_args() 函数演示'
  );

  //绑定默认值
  $r = wp_parse_args( $args, $defaults );

  $output = $r['before'] . $r['text'] . $r['after'];
  if( !$r['echo'] ) return $output;
  echo $output;
}

//没有参数
explain_parse_args();//打印:<div class="box">wp_parse_args() 函数演示</div>

//字符串参数
$output = explain_parse_args( 'text=字符串参数&before=<div class="box-2">&echo=0' );
echo $output;//打印:<div class="box-2">字符串参数</div>

//数组参数
explain_parse_args( array( 'text' => '数组参数', 'before' => '<div class="box-3">' ) );//打印:<div class="box-3">数组参数</div>
还有另一种不使用第二个 $defaults 参数的用法,就是帮你把一个查询字符串、对象或者数组的变量直接转换成通用的数组,避免判断类型。

//字符串
$array = wp_parse_args( 'text=测试另一种用法&type=字符串' );
var_dump( $array );
/*
  array(2) {
    ["text"]=>
      string(21) "测试另一种用法"
    ["type"]=>
      string(9) "字符串"
  }
*/

//对象(object)
class args_obj{

  public $text = '测试另一种用法';

  public $type = '对象(object)';

  function func(){
    //转换成数组的时候对象里边的函数会被忽略
  }

}
$obj = new args_obj;
var_dump( $obj );
/*
object(args_obj)#2175 (2) {
  ["text"]=>
    string(21) "测试另一种用法"
  ["type"]=>
    string(18) "对象(object)"
}
*/

二 、传递参数为负值的动静:

wp_parse_args函数源代码详解 wp_parse_args 函数的源代码比较简单,
专属于PHP
内置函数get_object_vars、array_merge与WordPress的wp_parse_str函数来贯彻,
以下是该函数的源代码:

substring()方法会把拥有负值参数转换为0。来看下例子:

/**
 * Merge user defined arguments into defaults array.
 *
 * This function is used throughout WordPress to allow for both string or array
 * to be merged into another array.
 *
 * @since 2.2.0
 *
 *第一个参数可以是 字符串、数组或对象(obj)
 * @param string|array $args Value to merge with $defaults
 *第二个参数为默认的预设值数组,必须是数组
 * @param array $defaults Array that serves as the defaults.
 *返回值将是一个数组
 * @return array Merged user defined values with defaults.
 */
function wp_parse_args( $args, $defaults = '' ) {
 if ( is_object( $args ) )
 //将接收的对象(obj)转换为数组
 $r = get_object_vars( $args );
 elseif ( is_array( $args ) )
 //如果是数组则不转换
 $r =& $args;
 else
 //将接收的字符串转换为数组
 wp_parse_str( $args, $r );
 if ( is_array( $defaults ) )
 return array_merge( $defaults, $r );
 return $r;
}
var str ="helloWorld";
// 两个参数,-4会转换为0,相当于substring(3,0) -->即为 substring(0,3)
alert(str.substring(3,-4)); // "hel" 

其中get_object_vars函数是用来回到由对象属性组成的关联数组。
array_merge函数用是将多少个或八个数组的单元合并起来,2个数组中的值增大在前四个数组的前面。返回作为结果的数组。

substring()方法会将较小的数作为起先地方,将较大的数作为达成地方。如下边包车型大巴例子substring(3,0)
与substring(0,3)是同一效果的。

您恐怕感兴趣的作品:

  • WordPress中用于获取作品消息以及分类链接的函数用法
  • 多少个优化WordPress中JavaScript加载体验的插件介绍
  • 快速控制WordPress中加载JavaScript脚本的方法
  • WordPress中用于获取文章作者与分类新闻的点子整理

4、IE兼容性

在IE8浏览器测试下,没啥难题,行为与现代浏览器同样。

substr()

概念:接受1个要么四个参数,第四个参数钦点子字符串的初叶地方。第叁个参数跟以前的点子有个别分歧,表示回去的字符个数。若是没有传递第二个参数,则将字符串的长度作为完成地点。来看例子:

① 、传递参数为正值景况:

var str ="helloWorld";
// 一个参数,则将字符串长度作为结束位置
alert(str.substr(3)); // "loWorld"
// 两个参数,从位置3开始截取后面7个字符
alert(str.substr(3,7)); // "loWorld" 

二 、传递参数为负值的情事:

substr()方法会将负的率先个参数加上字符串的长短,而将负的第1个参数转换为0。

var str ="helloWorld";
// 将第一个负的参数加上字符串的长度--->
//即为:substr(7,5) ,从位置7开始向后截取5个字符
alert(str.substr(-3,5)); // "rld"
// 将第二个参数转换为0
// 即为:substr(3,0),即从位置3截取0个字符串,则返回空
alert(str.substr(3,-2)); // "" 

3、IE兼容性

substr()方法传递负值的气象下会存在难点,会回去原始的字符串。IE9修复了此难点。

总结

在传递正值参数情形下,slice() 和 substring ()
行为是一律的,substr()方法在其次个参数上会不难混淆

在传递负值参数景况下,slice()
方法是由此字符串长度相加,符合一般思维,substring()第3个参数转换为0会不难出标题,初步地方会不难变更,substr()
方法负值情状下会出现IE包容性难点。

综上,大哥一般推荐使用slice()方法。

上面给大家介绍slice,substr和substring的分别

第叁,他们都吸收三个参数,slice和substring接收的是发端地方和终结地点(不包蕴结束地方),而substr接收的则是开场地点和所要重回的字符串长度。直接看上面例子:

 var test = 'hello world';
  alert(test.slice(,));    //o w
  alert(test.substring(,));   //o w
  alert(test.substr(,));   //o world 

此间有个须求专注的地点正是:substring是以多个参数中较小多个当做开端地点,较大的参数作为完成地方。

如:

alert(test.substring(7,4));   //o w 

紧接着,当接过的参数是负数时,slice会将它字符串的长短与相应的负数相加,结果作为参数;substr则唯有是将首先个参数与字符串长度相加后的结果作为第3个参数;substring则索性将负参数都间接转换为0。测试代码如下:

var test = 'hello world';  
alert(test.slice(-));   //rld  
alert(test.substring(-));  //hello world  
alert(test.substr(-));  //rld  
alert(test.slice(,-));  //lo w  
alert(test.substring(,-)); //hel  
alert(test.substr(,-));  //空字符串 

 注意:IE对substr接收负值的处理有错,它会回去原始字符串。

你也许感兴趣的小说:

  • JavaScript中国化学工业进出口总集团解多浏览器包容性2一个难题的立刻解决方法
  • 常用原生JS包容性写法汇总
  • JavaScript
    浏览器包容性计算及常用浏览器包容性分析
  • JS达成包容性较好的随屏滚动效应
  • JS完成包容性好,自动置顶的天猫悬浮工具栏效果
  • javascript中setAttribute()函数使用办法及包容性
  • css与javascript跨浏览器兼容性总括
  • js日期对象包容性的拍卖措施
  • Javascript
    多浏览器包容性问题及消除方案
  • JavaScript的包容性与调节技巧

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website