[面试没有回答上的问题4]常用字符串和数组的操作。

面试的时候有问到我如果用空格分割一个字符串,其实是一个很简单的问题,但是自己突然忘记了,这里做一个对字符串和数组操作的常用方法的一个简单的复习。

字符串部分

  1.split();

  split() 方法用于把一个字符串分割成字符串数组。

  语法 : stringObject.split(separator, howmany)

  参数 : separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。如果为("")空字符串,就表示字符串中每个字符都会被分割。

     howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会               被分割,不考虑它的长度。

  例子 :

<script type="text/javascript">

var str="How are you doing today?"

document.write(str.split(" ") + "<br />")
document.write(str.split("") + "<br />")
document.write(str.split(" ",3))

</script>

  输出:

How,are,you,doing,today?
H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
How,are,you

  2.slice();

  slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

  语法 : stringObject.slice(start, end);

  参数 : start 要抽取的片断的起始下标。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个                      字符,以此类推。

       end   紧接着要抽取的片段的结尾的下标。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符                串的尾部开始算起的位置。

  返回值  一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。

  需要注意的是, slice 如果第二个参数和第一个参数同时为负数,end 的位置必须在start的位置之后, 不可出现 str.slice(-5,-6),的情况,回返回空字符串

  示例1 ,提取第六位之后的字符。

  

<script type="text/javascript">

var str="Hello happy world!"
document.write(str.slice(6))

</script>

   输出

happy world!

   示例2, 我们将提取从位置 6 到位置 11 的所有字符:

<script type="text/javascript">

var str="Hello happy world!"
document.write(str.slice(6, 11))

</script>

   输出

happy

  3.subsring()

  substring() 方法用于提取字符串中介于两个指定下标之间的字符。

  语法 stringObject.substring(start, stop);

  substring() 和 slice()方法大致一样,有两个区别

  1). substring() 不接受参数为负数

  2). 如果参数 start 与 stop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。如果 start 比 stop 大,那么该方法在提取子串之前会先交换这两个参            数。

  4.substr()

substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。

  语法 : stringObject.substr(start, length);

  参数 : start  必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字                            符,-2 指倒数第二个字符,以此类推。

     length 可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。

  返回值  一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。

  重要事项:ECMAscript 没有对该方法进行标准化,因此反对使用它。

数组部分

  1.join()

  join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。

  语法 : arrayObject.join(separator)

  参数 : separator  可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。

  返回值 : 返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成                    的。

  示例

<script type="text/javascript">

var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

document.write(arr.join("."))

</script>

  输出

George.John.Thomas

  2.slice() 

  slice() 方法可从已有的数组中返回选定的元素。

   语法 : arrayObject.slice(start, end)

  参数 : start  必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。

     end  可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这                        个参数是负数,那么它规定的是从数组尾部开始算起的元素。

  返回值   返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。该方法并不会修改数组,而是返回一个子数组。

  和String的slice()方法雷同。

  3.splice()

  splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组。

  语法 : arrayObject.splice(index, howmany, item1, ... itemX)

  参数 : index   必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。

     howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。

     item   可选。向数组添加的新项目。

  返回值    包含被删除项目的新数组,如果有的话。如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。

  示例1  我们将创建一个新数组,并向其添加一个元素:

<script type="text/javascript">

var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"

console.log(arr + "<br />")
arr.splice(2,0,"William")
console.log(arr + "<br />")

</script>

  输出

George,John,Thomas,James,Adrew,Martin
George,John,William,Thomas,James,Adrew,Martin

  示例2  在本例中我们将删除位于 index 2 的元素,并添加一个新元素来替代被删除的元素:

<script type="text/javascript">

var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"

console.log(arr + "<br />")
arr.splice(2,1,"William")
console.log(arr)

</script>

  输出

George,John,Thomas,James,Adrew,Martin
George,John,William,James,Adrew,Martin

  示例3  删除第2个位值的元素

<script type="text/javascript">

var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"

console.log(arr + "<br />")
arr.splice(2,1)
console.log(arr)

</script>

  输出

George,John,Thomas,James,Adrew,Martin
George,Thomas,James,Adrew,Martin

  

  上述是一些比较常用的方法的总结,如果需要查看更多关于String对象和Array对象的方法,可以查看  String对象方法 Array对象方法

  

时间: 2024-10-25 14:03:36

[面试没有回答上的问题4]常用字符串和数组的操作。的相关文章

[ 面试没回答上的问题2]IOS上给body绑定click事件的bug

面试被问到ios上的bug,自己提到绑定click事件的bug,但是并没有把问题讲的很清楚,这里再清理一下思路. 这个bug只在IOS上有,包括ihone,ipad,由于ios浏览器都用的safari内核,所以ios浏览器全部中枪. bug描述 在进行事件委托时,如果将未存在于DOM的元素事件直接委托到body上的话,会导致事件委托失效,调试结果为事件响应到body子元素为止,既没有冒泡到body上,也没有被body所捕获.但如果事件是DOM元素本身具有的,则不会触发bug.换而言之,只有元素的

[面试没回答上的问题3]数组的去重

一个数组,怎么去除其中重复的项, 使用一个对象来储存当前元素是否重复来判断,如果重复就删除当前元素. /* 数组去重 */ function normalize(arr){ if(arr && Array.isArrat(arr)){ var i, len, map = {}; for(i = arr.length; i >= 0; --i){ if(arr[i] in map){ arr.splice(i, 1); } else { map[arr[i]] = true; } }

[面试没答上的问题1]http请求,请求头和响应头都有什么信息?

最近在找工作,面试官问了一些问题自己并没有回答上,这里做一个小结. http请求,请求头和响应头都有什么信息? 页面和服务器交互最常见的方式就是ajax,ajax简单来说是浏览器发送请求到服务端,然后服务端返回数据,常见的请求头和响应头如下图所示. 先看通用信息,通用信息有三个字段: 请求url, 请求方法, 状态码, 远程地址. 看下请求头Request Headers, Accept : 指定客户端能够接收的内容类型,内容类型中的先后次序表示客户端接收的先后次序.在Ajax代码中,可以使用X

今天面试问了一道题。说一串字符串由这几个符号组成&quot;&lt;&gt;{}[]()”,写一个算法,例如如果组成方式为“&lt;&gt;{[]}{}()”这种,也就是XML格式那种则返回true。否则返回false;

原创 今天面试问了一道题.说一串字符串由这几个符号组成"<>{}[]()",写一个算法,例如如果组成方式为"<>{[]}{}()"这种,也就是XML格式那种则返回true.否则返回false: 当时没想出来, 只想到了回文数解决办法.回文数解决办法是颠倒比较,相等为true: 换xml格式当时真没想到啥好方法: 在回来的路上想到了.. .. 去重,吧临近的一组去掉,在递归调用比较去重直到最后,如果有剩下则不返回false:否则true: 代码

一、实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作

请指教交流! 1 package com.it.hxs.c01; 2 3 import java.util.Stack; 4 5 /* 6 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作 7 */ 8 public class GetMinStack { 9 10 public static void main(String args[]) { 11 GetMinStack demoStack = new GetMinStack(); 12 demoStack.pus

Cisco(思科)设备上建议关闭的不常用服务

cisco设备上有一些不常用的服务默认是打开的,为了安全性考虑,建议关闭掉这些服务,除非有特殊应用场景.下面就谈谈这些服务的作用以及操作命令. 一.Cisco发现协议 CDP是一个Cisco专用协议,运行在所有Cisco产品的第二层,用来和其他直接相连的Cisco设备共享基本的设备信息.独立于介质和协议. ×××再勘测×××中使用CDP信息,这种可能性是比较小的.因为必须在相同的广播域才能查看CDP组播帧.所以,建议在边界路由器上关闭CDP,或至少在连接到公共网络的接口上关闭CDP. 缺省情况下

面试常见问题回答技巧

自己也是经过多次面试,总结了一些常见的面试技巧,这里参考<明哥聊求职>给出一部分面试技巧,希望对大家有帮助. 1.自我介绍 我是谁 我做过什么,我做成什么 我想做什么例:我非常看好贵公司和贵公司所在行业的发展前景,我非常热爱这个职业,愿意和贵公司一起成长.在工作中遇到很多问题,不过我还是成功地克服并达到了业务目标--这样会引导面试官提出'遇到哪些问题' 2.压力测试 案例一:如果我们公司这次没有录取你,但是过段时间被录取的人没通过试用期,这是再通知你,那么你还会来吗? 答:呵呵,说明我是一个替

[面试常考]排序算法总结

排序在各次面试的过程中问道的次数不少,冒泡排序和快速排序尤多.因此做一些总结,尤其是代码部分. 1. 冒泡排序 (1)思想 在一组数中,对当前未排好序的数,自上而下地对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的数往上冒. (2)复杂度 平均情况-O(n^2) 最坏情况-O(n^2)(逆序有序) 最好情况-O(n)(正序有序) 空间复杂度-O(1) (3)稳定性 稳定 (4)伪码 bubblesort(A) { for i=1 to length[A] // 排序的趟数 { for

面试回忆录「上」(腾讯/阿里/滴滴/美团...)

点击上方的终端研发部,右上角选择“设为星标”每日早9点半,技术文章准时送上公众号后台回复“学习”,获取作者独家秘制精品资料 image 往期文章 记五月的一个Android面试经 今日头条屏幕适配方案落地研究 APK瘦身-是时候给App进行减负了 即学即用Android Jetpack - Navigation 手机商对“鸿蒙”进行了密集测试:比安卓系统快? 原文地址:https://www.jianshu.com/p/4e839adcd559 作者:soulrelay 前言 也许到了金九银十,