JS常见用法(2)-- 数组/字符串/对象操作

一、字符串

字符串常用方法:https://www.cnblogs.com/l1pe1/p/6197371.html

截取字符串(slice)

 str.slice(0, 10)  

http://www.cnblogs.com/lmsblogs/p/5876384.html

  • 删除字符串最后一位(slice)
str.slice(0,str.length-1)

https://www.jb51.net/article/126580.htm

数组和字符串的转换(join & split)

一、数组转字符串
let arr = [a,b,c,d,e]
b = arr.join(''); // abcde
let arr = [a,b,c,d,e]
b = arr.join(','); // a,b,c,d,e ——数组转字符串,用’,‘隔开
二、字符串转数组
let arr = abcde
c = arr.split(''); // [a,b,c,d,e]

https://www.cnblogs.com/LeoBoy/p/5899734.html
https://www.cnblogs.com/guorange/p/7127839.html

获取字符串最后一位方法(charAt)

str.charAt(str.length – 1)

https://www.cnblogs.com/LChenglong/p/6856530.html

返回某个指定的字符串值在字符串中首次出现的位置(indexOf)

 var str="Hello world!"
document.write(str.indexOf("Hello") + "<br />")   // 0
document.write(str.indexOf("World") + "<br />")  // -1  不存在
document.write(str.indexOf("world"))  // 6

http://www.w3school.com.cn/jsref/jsref_indexOf.asp

截取从 start 下标开始的指定数目的字符(substr)
var str="Hello world!"George.John.Thomas
document.write(str.substr(3))  // lo world!
var str="Hello world!"
document.write(str.substr(3,7))  // lo worl

http://www.w3school.com.cn/jsref/jsref_substr.asp

为数值补定指定位数(padStart)
var month = 8
month = month.padStart(2, '0') // 08

https://blog.csdn.net/qq_37548296/article/details/107259899

判断字符串为全数字

     if (!/^[0-9]+$/.test(item.vacationDate)) {
        this.$message.warning('调休天数必须是数字')
        return
      }

https://zhidao.baidu.com/question/1050724412676679539.html

判断字符串是否包含某个字段

  • 方法1:将字符串转化为数组 判断是否包含
      let str = '北京,上海'
      let arr = str.split(',')
        console.log(arr)
      arr.forEach((item, index) => {
        console.log(item)
        if (item == '北京' || item == '全国') {
          console.log(111)
          // this.flag = true
        }
      }, this)
  • 方法2:indexOf 直接判断
      let str = '北京,上海'
      console.log(str.indexOf('北京'))
      if (str.indexOf('北京') != -1 || str.indexOf('全国') != -1) {
        console.log(11)
      } else {
        console.log(22)
      }

二、数组

往数组开头/结尾添加数据(unshift、push)

var arr = [ 1,2,3 ];
alert( arr.unshift( 'abc' ) );   // 4 返回的是长度
alert( arr.push( 'abc' ) );   // 4 返回的是长度
arr.unshift( 'abc' )
arr.push( 'abc' )
alert(arr)  // ['abc',1,2,3,'abc']  // 返回数组

https://www.cnblogs.com/SongHuiJuan/p/6627490.html

数组倒序(reverse)

let arr = [1,2,3]
let arr2 = arr.reverse()
console.log(arr2) // [3,2,1]

https://www.cnblogs.com/tunshiyublogs/p/9363890.html

求数组最大值 (Math.max)

let max = Math.max.apply(null, arr)

合并两个数组(concat)

let a = [1,2,3];
let b = [4,5,6];
let c = [7];
let d = a.concat(b, c);   // [1,2,3,4,5,6,7];

https://www.cnblogs.com/koala0521/p/7278056.html

判断一个数组是否包含一个指定的值 (indexOf)

let arr = ['something', 'anything', 'nothing', 'anything'];
let index = arr.indexOf('nothing');
console.log(index) //结果是2

https://www.cnblogs.com/hepengqiang/p/9822118.html

数组删除(splice)

一、删除数组里的某个元素
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
二、数组删除指定下标
//删除起始下标为1,长度为2的一个值(len设置2)
var arr2 = ['a','b','c','d']
arr2.splice(1,2);
console.log(arr2); 
//['a','d']
三、delete方法删除掉数组中的元素后,会把该下标出的值置为undefined,数组的长度不会变
var arr = ['a','b','c','d'];
delete arr[1];
arr;
//["a", undefined × 1, "c", "d"] 中间出现两个逗号,数组长度不变,有一项为undefined

JS删除数组里的某个元素方法
http://caibaojian.com/js-splice-element.html
https://www.jb51.net/article/134312.htm
JS删除数组中指定的对象
https://blog.csdn.net/frankenstein_/article/details/82788490
js增加移除替换数组里的某个元素
https://blog.csdn.net/hedy17/article/details/79378774

数组截取 -- slice和splice的区别

一、
slice(start,end) 第二个值是结束位置(包含开始索引,不包含结束索引,索引从0开始,如果第二个值为空,则截取到数组最后)
splice(start,length) 第二个值是长度
二、
slice 原数组不变

splice 原数组中的数值被剔除掉了

let y = [0,1,2,3,4,5,6,7,8,9]
console.log(y.splice(2,5)); //2,3,4,5,6
console.log(y); // [0,1,7,8,9]显示原数组中的数值被剔除掉了

https://cncat.cn/post-285.html

es6,数组去重

this.newarr = Array.from(new Set(this.arr))

判断一个值是不是数组

let arr = []
let obj = {}
console.log(arr instanceof Array); //true
console.log(obj instanceof Array); //false

https://www.cnblogs.com/Walker-lyl/p/5597547.html

原生js,将数组每n个存为一个数组

// JS 如何从一个length为12的数组中按顺序取每5个元素为一组放到新数中,
// 最后不够5个的也存为一个数组
var SplitArray = function(N,Q)
{
    var R = [],F;
    for (F = 0;F < Q.length;) R.push(Q.slice(F,F += N))
    return R
}
var arr = [1,2,3,4,5,6,7,8,9,10,11,12];
console.log(SplitArray(5,arr))

https://zhidao.baidu.com/question/813779575873380212.html

清空数组的三种方法

var ary = [1,2,3,4]; 
ary.splice(0,ary.length); // splice
ary.length = 0; // length赋值为0
ary = []; // 赋值为一个空数组;更快,效率更高

https://blog.csdn.net/p358278505/article/details/70193930

判断两个数组是否相等

当两个数组元素排序不相同时,先排序,再比较。如果是对象数组,可以结合 JSON.stringify 来使用。

var isNotChange =
        clinic_ids.length === ids.length &&
        clinic_ids.sort().toString() === ids.sort().toString();

https://www.jb51.net/article/247032.htm

从数组中随机取值

var items = ['1','2','4','5','6','7','8','9','10'];
var item = items[Math.floor(Math.random()*items.length)];
  • 如果想取多个,可以直接循环添加到数组里,也可以直接赋值,如下:
let colorList = ['#C05155', '#5E76D7', '#F7BB60', '#89B77E']
info_data.forEach((item, index) => {
   item.color = colorList[Math.floor(Math.random()*colorList.length)]
}, this)
为span随机设置背景颜色
<li v-for="(datas , indexs) in info_data" :key="datas.id">
    <span :style="{background:datas.color}">{{datas.user_name}}</span>
</li>

https://blog.csdn.net/web_leeleon/article/details/80308727

js去除数组中的null及空值

var arr = ['2','3','',null,undefined,'7',' ','9'];
var r = arr.filter(function (s) {
    return s && s.trim(); // 注:IE9(不包含IE9)以下的版本没有trim()方法
});
console.log(r);

https://blog.csdn.net/qq_37796017/article/details/90229667

交换数组两个数位置(3种方法)

arr[index1] = arr.splice(index2, 1, arr[index1])[0];
arr[index1] = [arr[index2],arr[index2]=arr[index1]][0];
[a,b] = [b,a]; 

https://www.jianshu.com/p/10cce4cce7f8

数组转对象 {key: value}

[{ id: 1, name: '张三' },{ id: 2, name: '李四' }] 转化为 {1:'张三', 2:'李四'}

let arr = [{ id: 1, name: '张三' },{ id: 2, name: '李四' }]
let obj = {}
arr.forEach(item => obj[item.value] = item.name)

https://www.cnblogs.com/pine007/p/16363288.html

js数组根据多个属性进行排序

https://blog.csdn.net/wyg1995/article/details/79432489

js根据json数据中的某一个属性来给数据分组

var arr = [{"Group":1,"Groupheader":"质量管理","Leftimg":"","Left":"","Min":"","Right":"","Rightimg":""},
{"Group":1,"Groupheader":"","Leftimg":"","Left":"","Min":"质量巡检","Right":"","Rightimg":""},
{"Group":2,"Groupheader":"设备管理","Leftimg":"","Left":"","Min":"","Right":"","Rightimg":""}]

 var map = {}
            var dest = [];
            for(var i = 0; i < arr.length; i++){
                var ai = arr[i];
                if(!map[ai.Group]){
                    dest.push({
                        Group: ai.Group,
                
                        data: [ai]
                    });
                    map[ai.Group] = ai;
                }else{
                    for(var j = 0; j < dest.length; j++){
                        var dj = dest[j];
                        if(dj.Group == ai.Group){
                            dj.data.push(ai);
                            break;
                        }
                    }
                }
            }
            console.log(dest)

[
    {
        "Group": 1,
        "data": [
            {
                "Group": 1,
                "Groupheader": "质量管理",
                "Leftimg": "",
                "Left": "",
                "Min": "",
                "Right": "",
                "Rightimg": ""
            },
            {
                "Group": 1,
                "Groupheader": "",
                "Leftimg": "",
                "Left": "",
                "Min": "质量巡检",
                "Right": "",
                "Rightimg": ""
            }
        ]
    },
    {
        "Group": 2,
        "data": [
            {
                "Group": 2,
                "Groupheader": "设备管理",
                "Leftimg": "",
                "Left": "",
                "Min": "",
                "Right": "",
                "Rightimg": ""
            }
        ]
    }

https://blog.csdn.net/firoly/article/details/54314367

三、对象

js对象属性遍历(for…in…)

通过for…in…循环来实现对对象属性的遍历输出
http://baijiahao.baidu.com/s?id=1599805069461530979&wfr=spider&for=pc

  • 获取对象key值与value值的方式
var obj = {
            'name': '杨',
            'year': 27
        }
        var key = []
        var value = []
        for (var i in obj) {
            key.push(i)
            value.push(obj[i])
        }
        console.log(key)
        console.log(value)

https://www.cnblogs.com/xpcool/p/9501323.html

删除对象属性 (delete)

for(var key in student){
delete student[key];
}
console.log(student);

https://www.cnblogs.com/isykw/p/6869084.html

将对象排序输出 -- Object.keys(obj)

eg:
var anObj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.keys(anObj));   // console: ['2', '7', '100']

对象长度 -- Object.keys(obj).length

1、传入对象,返回属性名
var obj = {'a':'123','b':'345'};
console.log(Object.keys(obj)); //['a','b']
2、传入字符串或者数组,返回索引
var str = 'ab1234';
console.log(Object.keys(obj)); //[0,1,2,3,4,5]

  • 实例:
if (Object.keys(obj).length === 0) {
  alert('请选择至少一个选项')
  return
}

js 判断对象中所有属性是否为空

for (var key in this.ruleForm) {
   if (this.ruleForm[key]) {
       this.flag = true
    }
}

https://www.cnblogs.com/crazycode2/p/8926103.html

js判断对象是否为空对象的几种方法

v-if=" JSON.stringify(obj) == '{}' "  // 即obj为空对象时

四、json

json.parse (从一个字符串中解析出json对象)
 var data = '{"name":"goatling"}'
console.log(JSON.parse(data))   //  {name:"goatling"}
console.log(typeof JSON.parse(data))   // object
json.stringify (从一个对象中解析出字符串)
 var data = {name:'goatling'}
console.log(JSON.stringify(data))   //  '{"name":"goatling"}'
console.log(typeof JSON.stringify(data))  // string

https://www.cnblogs.com/goatling/p/6293692.html

五、计算

除法 向上取整(Math.ceil)

1.丢弃小数部分,保留整数部分 
js:parseInt(7/2)
2.向上取整,有小数就整数部分加1 
js: Math.ceil(7/2)  // 4
3,四舍五入. 
js: Math.round(7/2)
4,向下取整 
js: Math.floor(7/2) // 3

https://blog.csdn.net/xinyuan_java/article/details/40300873

绝对值 (Math.abs)

Math.abs(7.2) // 7.2
Math.abs(-2.1)  // 2.1
Math.abs(-8.1) // 8.1

余数(%)

var box = 10%3
console.log(box) // 1

https://www.cnblogs.com/xiaoxinzi/p/8482836.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容