String对象

split

功能:把字符串分割为字符串数组。官方文档已经描述的够清楚,不多赘述。主要说一下需要注意的情况以及应用

1、省略分割参数

var str="How are you doing today?";
var n=str.split(); //n 输出数组值得结果:
["How are you doing today?"]

2、分割字符为空字符""`

//分割每个字符,包括空格:
var str="How are you doing today?";
var n=str.split(""); //n 输出数组值得结果:
H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?

3、使用 limit 参数

var str="How are you doing today?";
var n=str.split(" ",3); //此分隔符为空格
//n 将输出3个数组的值:
How,are,you

4、使用某个字符做分隔符(重点)

var tktNo: '781-1157594322/781-1157594323/781-1157594324'
console.log(tktNo.split('/'))
//结果为:
["781-1157594322", "781-1157594323", "781-1157594324"]

Array对象

filter

用法: 用于过滤,就是把数组中的每个元素,使用回调函数func进行校验,回调函数func返回一个布尔值,将返回值为 true 的元素放入新数组

参数:函数

返回值: Boolean

写法一:

//箭头函数 参数n为数组元素
const nums = [20,30,110,60,190,50]
let newNums =nums.filter(n =>{
return n < 100
})

写法二:

//普通函数
let newNums = nums.filter(function(n) {
return n < 100;
})

map

用法: 遍历原数组,将元素处理然后放入到新数组中

参数: 函数

返回值: 新数组元素

写法一:

//箭头函数
let newNums2 =newNums.map(n =>{
return n*2
})

写法二:

let newNums2 =newNums.map(function(n){
return n*2
})

reduce

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数 描述
total 必需。初始值, 或者计算结束后的返回值。初始值 = initialValue
currentValue 必需。当前元素
currentIndex 可选。当前元素的索引
arr 可选。当前元素所属的数组对象。

返回值: 新数组元素

示例:

//将数组中所有元素加上n
let arr = [20,40,80,100]
let sum = arr.reduce( (preValue, n) => {
return preValue + n
},0)
/*
第一次:preValue -> 0 ; n-> 20
第二次:preValue -> 20 ; n-> 40
第一次:preValue -> 60 ; n-> 80
第一次:preValue -> 140; n-> 100
*/

preValue:上一次汇总的值,即return的值,初始值设置为0

n: 是指遍历数组中的元素

链式调用

将数组arr中小于10的元素*2然后再相加

var arr = [2,6,8,11,20,32];
let total = arr.filter(n => n < 10).map(n => n*2).reduce((pre,n) => pre + n)
console.log(total); // 32

sort排序

sort() 方法用于对数组的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。默认排序顺序为按字母升序。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); //输出结果 Apple,Banana,Mango,Orange

默认升序,若想实现降序

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse()

注意:当数字是按字母顺序排列时"40"将排在"5"前面。要使用数字排序,必须通过一个函数作为参数来调用,即Array.sort(callback),函数指定数字是按照升序还是降序排列。

//数字排序(数字和升序):
var points = [40,100,1,5,25,10];
points.sort(function(a,b){return a-b});
//输出结果 1,5,10,25,40,100 //降序
points.sort(function(a,b){return b-a});

排序方法callback

如果返回值小于0表示两个元素不需要交换位置,大于0表示要用交互位置,0表示相等,实际上<=0等效。

键值对{}

Object.assign()

用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。

const target = { a: 1 };

const source1 = { b: 2 };
const source2 = { c: 3 }; Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}

参考文档

应用

统计一个字符在字符串中出现的次数

方式一

var arr = 'abcdaabc';
var newArr1=arr.split('a') //["", "bcd", "", "bc"]
var newArr2=arr.split('b') //["a", "cdaa", "c"]
var newArr3=arr.split('c') //["ab", "daab", ""]
var num = newArr.length-1 //num即为出现次数

之所以出现空字符串:

  • 该字符出现在首尾处
  • 相同字符相邻时中间会出现空字符

方式二

var strs = "hello everyone"
var num = strs.split('').filter(i => i == 'e').length

统计所有出现过的字符在字符串中出现的次数

/*
res: 单次返回结果
cur: 当前数组元素
{}: 返回结果初始值
*/
var arrString = 'abcdaabc';
var tt = arrString.split('').reduce((res, cur) => {
console.log("cur",cur); //'a','b','c','d','a'.......
console.log("res[cur]",res[cur]); // undefine
res[cur] ? res[cur] ++ : res[cur] = 1 //三目运算符,res[cur]为undefine时,给key为cur的value赋值为1,之后叠加次数
console.log("res",res);
return res;
}, {})
//res 结果为
{a: 3, b: 2, c: 2, d: 1}

数组元素累加

arr.reduce( (a,b) => a+b)

对象数组按某个属性排序

实际上在于数组对象的sort方法 : Array.sort(callback)

let  cities = [
{name:'西安市',value:100},
{name:'威阳市',value:120},
{name:'延安市',value:80},
{name:'南洛市',value:90},
{name:'榆林市',value:130}
] function sortRule(a,b) {
return a.value - b.value
} cities.sort(sortRule)
console.log(cities);

打印结果如下

[
{name: "延安市", value: 80},
{name: "南洛市", value: 90},
{name: "西安市", value: 100},
{name: "威阳市", value: 120},
{name: "榆林市", value: 130}
]

若想不规定某个属性,而是指定任意属性

let  cities = [
{name:'西安市',value:100},
{name:'威阳市',value:120},
{name:'延安市',value:80},
{name:'南洛市',value:90},
{name:'榆林市',value:130}
] function sortRule(prop) {
return function (a,b) {
return a[prop] - b[prop]
}
} cities.sort(sortRule('value'))
console.log(cities);

JavaScript 对象:String & Array 及其常见应用的更多相关文章

  1. JavaScript (六) js的基本语法 - - - Math 及 Date对象、String对象、Array对象

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.Math 1.Math对象的案例 var result= Math.max(10,20,30,40) ...

  2. JS内置对象-String对象、Date日期对象、Array数组对象、Math对象

    一.JavaScript中的所有事物都是对象:字符串.数组.数值.函数... 1.每个对象带有属性和方法 JavaScript允许自定义对象 2.自定义对象 a.定义并创建对象实例 b.使用函数来定义 ...

  3. 详解Javascript中的Array对象

    基础介绍 创建数组 和Object对象一样,创建Array也有2种方式:构造函数.字面量法. 构造函数创建 使用构造函数的方式可以通过new关键字来声明,如下所示: 12 var arr = new ...

  4. JavaScript快速入门-ECMAScript本地对象(String)

    一.String对象 String对象和python中的字符串一样,也有很多方法,这些方法大概分为以下种类: 1.索引和查找 1.charAt()   返回指定位置的字符. 2.charCodeAt( ...

  5. JavaScript中String对象的match()、replace() 配合正则表达式使用

    正则表达式由来已久,查找替换功能非常强大,但模板难记复杂. JavaScript中String对象的match().replace()这2个方法都要使用正则表达式的模板.当模板内容与字符串不相匹配时, ...

  6. JavaScript 对象Array,Map,Set使用

    for(int i = 0 :i < 3 ;i++ ){ //[重点说三遍] 在说明每个对象的用法之前,首先说明 JavaScript 对象的使用一定要注意浏览器的兼容性问题!尤其是IE的版本! ...

  7. JavaScript:String 对象

    ylbtech-JavaScript:String 对象 1.返回顶部 String 对象 String 对象用于处理文本(字符串). 创建 String 对象的语法: new String(s); ...

  8. JavaScript 字符串(String)对象

    String 对象 String 对象用于处理文本(字符串). 创建 String 对象的语法: new String(s); String(s); 参数 参数 s 是要存储在 String 对象中或 ...

  9. javascript 对象初探 (四)--- 内建对象之旅之Array

     我们不要去纠结神马是内建对象,神马是內建构造器.到后来你们便会发现其实她们都是对象. Array()是一个构建数组的內建构造器函数: var arr = new Array(); 与下面的是等效的: ...

随机推荐

  1. Rabbit 高级操作

    Rabbit 高级操作 1.过期时间TTL 过期时间TTL表示可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取:过了时间之后消息将自动被删除. RabbitMQ可以对消息和队列设置TTL. ...

  2. P4585-[FJOI2015]火星商店问题【线段树,可持久化Trie】

    正题 题目链接:https://www.luogu.com.cn/problem/P4585 题目大意 \(n\)个集合,开始每个集合中有一个数字. 开启新的一天并且往集合\(s\)中插入数字\(v\ ...

  3. AT4519-[AGC032D]Rotation Sort【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/AT4519 题目大意 给出一个长度为\(n\)的排列,每次可以选择一个区间,然后花费\(A\)的代价向左旋转(最左边 ...

  4. pycharm输入代码后,没有补全提示

    安装pycharm后,输入代码后,没有补全提示 首先检查是否关闭了代码提示,如下图,将红框中"Power Save Mode"前的勾去掉 第二步,如果在输入某些代码时还是没有补全提 ...

  5. Pytorch——张量 Tensors

    张量 Tensors 1.torch.is_tensor torch.is_tensor(obj) 用法:判断是否为张量,如果是 pytorch 张量,则返回 True. 参数:obj (Object ...

  6. cookie和session和localStorage的区别

    这三个都是保存在浏览器端,而且都是同源的. Session仅在当前浏览器窗口关闭有效,不能持久保存 Localstorage始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据 Cookie只在设置 ...

  7. 代码混淆保安全「GitHub 热点速览 v.21.43」

    作者:HelloGitHub-小鱼干 虽然让代码难以阅读看似是件难以理解的事情,但是混淆后的代码起到了类似加密的作用,而且经过混淆的代码依旧能实现原代码的功能.javascript-obfuscato ...

  8. Convolutional Neural Network-week2编程题1(Keras tutorial - 笑脸识别)

    本次我们将: 学习到一个高级的神经网络的框架,能够运行在包括TensorFlow和CNTK的几个较低级别的框架之上的框架. 看看如何在几个小时内建立一个深入的学习算法. 为什么我们要使用Keras框架 ...

  9. 实用小工具:screen

    实用小工具:screen 首先,吹爆screen screen,实现了不间断的会话服务,通过SSH连接至远程服务器,当使用了screen开启的会话,不会因为你断开SSH而中断在远程服务器上运行的命令. ...

  10. JDK里常见容器总结

    自己总结.   扩容 线程安全   是否支持null 的key 说明 hashmap 2*length 否   是 1.8以后增加红黑树.提高检索效率 hashtable   是   否 官方不建议使 ...