数组、字符串、对象常用方法

Array数组常用的方法
(1)concat
该方法的作用是把当前数组与指定数组相连接,返回一个新的数组,该数组中含有前面两个数组的所有元素,其长度为两个数组的长度之和。基本语法格式为"array1.concat(array2)".
(2) join
该方法的作用是将数组中的所有元素连接到一个字符串。
(3)push
该方法可以将所指定的一个或多个数据添加到数组中,该方法的返回值为新添加新数据后数组的长度。其语法格式为array.push([data1[,data2[,…]]);
(4)reverse
该方法可以将数组中的元素反序排列,数组中所包含的内容和数组的长度不会改变。其语法格式为array.reverse(),其中array为数组的名称。
(5)slice
该方法将提取数组中的一个片段或子字符串,并将其做为新数组返回,而不修改原始数据。其语法格式为:array.slice(start,end)
其中,array必选项是数组对象,start必选项表示元素开始的位置,是从0开始计算的索引,end为可选项。
(6)splice
该方法可以通过指定起始索引和数据个数的方式,删除或替换数组中的部分数据。该方法的返回值为被删除或替换掉的数据。其语法格式为:
arrayObject.splice(index,howmany,item1,…,itemX); index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。howmany必需。要删除的项目数量。如果设置为 0,则不会删除项目。item1, …, itemX可选。向数组添加的新项目。
(7)shift
该方法可以删除数组的第一个元素,并返回第一个元素的值。
(8)map
map()方法定义在JavaScript的Array中,它返回一个新的数组,数组中的元素为原始数组调用函数处理后的值。
(9) findIndex
find()函数用来查找目标元素,找到就返回该元素,找不到返回undefined。
findIndex()函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1
查找函数有三个参数。value:每一次迭代查找的数组元素。
index:每一次迭代查找的数组元素索引。 arr:被查找的数组
array.findIndex(function(currentValue, index, arr), thisValue)
数组方法:
slice: slice() 方法可从已有的数组中返回选定的元素。(不改变原始数组)
item.Name = item.Name.slice(0, item.Name.indexOf(‘-’))
var fruits = [“Banana”, “Orange”, “Lemon”, “Apple”, “Mango”];
var citrus = fruits.slice(1,3); ===Orange,Lemon 包尾不包前slice(0,3)=前三个
splice: splice() 方法用于添加或删除数组中的元素。(改变原始数组)
array.splice(index,howmany,item1,…,itemX)
index必需。规定从何处添加/删除元素。
该参数是开始插入和(或)删除的数组元素的下标,必须是数字。(数组从1开始 arr[1])
this.peopleListName.splice(this.peopleListName.indexOf(item.Name), 1)
从第二个之后开始删除两个:
var fruits = [“Banana”, “Orange”, “Apple”, “Mango”];
fruits.splice(2,2); fruits === Banana,Orange
indexOf: indexOf() 方法可返回数组中某个指定的元素位置,开始位置的索引为 0。
如果indexOf值为-1,则数组中不包含这个值
JSON.stringify:JSON对象的方法JSON.stringify是专门把对象或者对象的数组格式化为json
JSON.parse:JSON对象的方法JSON.parse是专门把json解析为对象或者对象的数组
toString: 数组转化为字符串
数组去重:this.peopleList= Array.from(new Set(this.peopleList))
对象数组去重:[{},{}]是否含有某个键,若无对map对象set赋值,i是一个对象,包含各种属性, map对象为空不含有i.id,has()返回false,!has(i.id)则为true,map.set(i.id,i),赋值key和value
const map = new Map()
for (const i of this.peopledata) {
if (!map.has(i.id)) { map.set(i.id, i) } }
this.peopledata = […map.values()]
数组对象去重:reduce跟常用的map,forEach一样,用于遍历循环。pre: 必需。初始值, 或者计算结束后的返回值,cur: 必需。当前元素。判断新对象是否有相同id键,返回pre
let newobj = {};
arr = arr .reduce((preVal, curVal) => {
newobj[curVal.id] ? ’ ’ : newobj[curVal.id] = preVal.push(curVal);
return preVal
}, [])
数组中删除某一特定元素:this.peopleListName.splice(this.peopleListName.indexOf(item.Name), 1)
对象数组删除特定对象:this.searchcheck.splice(this.searchcheck.findIndex(item=>item.id
=record.id),1)
对象数组删除多个特地对象:两个数组对象去重,删除两个数组中相同的对象

let newArr= arr1.filter((v) =>
arr2.every((val) => val.id != v.id)

for(let i=0;i<this.selectdeletecom.length;i++){

 for(let j=0;j<this.selectedRowKeyscom.length;j++)

          if(this.selectdeletecom[i].id===this.selectedRowKeyscom[j]){

            this.selectedRowKeyscom.splice(j,1)

          }

        }

forEach:无返回值 遍历数组的每一个元素。改变item值 并不会改变原数组中的元素值
var a = [1,‘1’,{num:1},true]
a.forEach((item, index, arr) => {
item.num = 2
item = 2
})
console.log(a)// [1,‘1’,{num:2},true]
对于JS中的基本数据类型,如String,Number,Boolean,Undefined,Null是存在于栈内存中的,在栈内存中储存变量名及相应的值。而Object,Array,Function存在于堆内存中,在堆内存中储存变量名及引用位置。
item=2因为item的值并不是相应的原数组中的值,而是重新建立的一个新变量,值和原数组相同。新创建的变量和原数组中的对象虽然指向同一个地址,但改变的是新变量的值,新对象的值为2,原数组中的对象还是{num:1}。要想原数组改变 需arr[index] = 2。
item.num = 2由于对象是引用类型,新对象和旧对象指向的都是同一个地址,所以新对象把num变成了2,原数组中的对象也改变了。
map函数:返回一个新的数组,数组中的元素为原始数组调用函数处理后的值。注意要是使用()=>{}必须要有return 将数据返回 否则默认返回 undefined,
和foreach语法相同array.map(function(currentValue, index, arr)=>{ })
let ids =this.options.map((item) => item.id) this.$set(this.checkedList,this.activeIndex,ids)
let array = [1, 2, 3, 4]
let newArray = array.map(item=>item +1) [2,3,4,5]

推荐这种写法 let newArray = array.map(item=>{
return item += 1;
})
foreach和map函数的区别:
1.map速度比foreach快
2.map会返回一个新数组,不对原数组产生影响,forEach不会产生新数组,forEach返回undefined
3.map因为返回数组所以可以链式操作,foreach不能
4, map里可以用return ,而foreach里用return不起作用,foreach不能用break,会直接报错
在foreach循环完成之后执行一个回调函数
arr.forEach((item, index, arr) => {

if(index === arr.length-1){
this.callBack();
}
})
使用Promise实现循环完成之后执行一个回调函数
Promise.all(
arr.map((item) => {
return new Promise((resolve, reject) => {

     })   
})

).then((result) => {
console.log(“all done”);
})
filter:用于对数组进行过滤。类似于map函数,也需要有返回值 否则会返回一个空数组
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

let res = nums.filter((num) => {
return num > 5;
});

let res = nums.filter((num) =>
num > 5;
);
数组快速筛选出某一对象:
eg: [{id:1,value:1},{id:2,value:2} ,{id:3,value:3} ]

{{ item.type && dateList.filter(item2 => item2.id === item.type )[0].value }}

es6 Set:成员不会有重复值.Set有实例属性size,方法 add delete has clear.
var set1 = new Set([1,2,3,3,3,3,3,2]) // 结果数组会去重 Set {1,2,3}
es6 Map:使用set()方法可以给Map添加键值对 ,能够自动去重,和set原理一样,添加相同的元素会进行去重处理;
通过get()方法可以从Map中提取值,size方法同set一样,获取数组长度;
(1)get() 方法用来获取一个 Map 对象中指定的元素。
(2)set() 方法为Map对象添加一个指定键(key)和值(value)的新元素。
(3)has() 返回一个bool值,用来表明map 中是否存在指定元素。
同set一样,也有 has(),delete(),clear() 方法
Array.from():方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组;.
将Set结构的数据转换为真正的数组; Array.from(new Set([1,2,3,3,3,3,3,2]))===[1,2,3]
es6 includes表示某个数组是否包含给定的值,与字符串的includes方法类似。
1)第一个参数是要查找的元素

2)第二个参数表示搜索的起始位置,默认为 0 。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为 -4 ,但数组长度为 3 ),则会重置为从 0 开始。
字符串转化为数组: let coorinates = coor.split(“,”); let lnglat = JSON.parse(“[” + coorinates + “]”);
split: split() 方法用于把一个字符串分割成字符串数组。split() 方法不改变原始字符串。
var str=“How are you doing today?”;
var n=str.split(); === [How are you doing today?]
如果把空字符串 (“”) 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
var n=str.split(“”); === [H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?]
字符串截取方法:substr(0,10) 截取前十个字符

字符串替换replace:str = str.replace(/~/g, ‘:’) //处理日期时间为hh:mm::ss,替换~为:
去除首尾空格 replace(/(^\s*)|(\s*$)/g, “”) 去除所有空格replace(/\s*/g,“”)
对象方法:
判断对象是否为空:Object.keys(obj) 返回数组===[]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值