var str = "Hello World";
console.log(str.substr(0,1));//H
console.log(str.substr(-1));//d
2018/04/08 追加:
如果字符串是一个链接,想要获得图片参数,先获取最后5个字符
再截取第一个字符(适用于git参数只有一个时且图片名称为一个字符的时候)
var str2 = "http://www.xxxx.com?imgsrc=1.jpg";
console.log(str2.substr(-5)); //1.jpg
console.log(str2.substr(-5).substr(0,1)); //1
2018/04/10追加
通过下标找到对应的字符
var str="大家好,我是东,我来自南方。"
console.log(str[6]); //东
通过字符找到对应的下标
var str='大家好,我是东,来自南方。';
var n=str.indexOf("东");
console.log(n+1); //7 从1开始算起第几位,没有查找到这个字符的时候为n为-1
通过“,”将字符串分割成数组
var str="a,b,c,d,e,f";
var arr=str.split(",");
console.log(arr) //["a", "b", "c", "d", "e", "f"]
2019/07/17中途追加
通过toString将数组转行承字符串
2018/05/12追加
获得特殊字符前面或后面的所有字符
var str="item/jsonitem/httsdh.txt";
var strindex=str.indexOf(".");
var data1 = str.substr(0,strindex);
console.log(data1) //item/jsonitem/httsdh
var data2 = str.substr(strindex,str.length);
console.log(data2) //.txt
var data3 = str.substr(strindex+1,str.length);
console.log(data3) //txt
2018/06/20追加
去掉所有的引号
var reg = new RegExp('"',"g");
str = str.replace(reg, "");
let arr=[]
let str = this.Imagessss
let newstr = str.replace(/http:\/\/xxxx.com/g,"")
arr=newstr.split(",");
Imagessss字符串格式有http和没有http的数据都统一格式
2019/05/21追加
通过“ ”将字符串分割成数组
var str="abcdef";
var arr=str.split("");
console.log(arr) //["a", "b", "c", "d", "e", "f"]
2020/11/18追加 (splice有三个参数)
通过splice删除数组中某一项或多项
通过splice替换数组中某一项或多项
获取所有属性的值(前4个字母):
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
</head>
<body>
<p val = 'data-name'>小明</p>
<p val = 'data-age'>22</p>
<p val = 'sex'>男</p>
<script src="jquery.min.js"></script>
<script>
var arr=[];
$('p').each(function(){
arr.push($(this).attr('val').substr(0,4))
})
console.log(arr); //["data", "data", "sex"]
</script>
</body>
</html>
获取所有属性的值为data的文本(前4个字母):
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
</head>
<body>
<p val = 'data-name'>小明</p>
<p val = 'data-age'>22</p>
<p val = 'sex'>男</p>
<script src="jquery.min.js"></script>
<script>
var arr=[];
var v = '';
$('p').each(function(){
v=$(this).attr('val').substr(0,4);
if(v == 'data'){
arr.push($(this).text())
}
})
console.log(arr); //["小明", "22"]
</script>
</body>
</html>
2019/11/12追加
两个数组里面相同的都去掉
2019/11/27追加
数组中,只去掉name字段重复的
2020/03/16追加
parms:{
"namespace": "teas.jwgl.bjxygl",
"pageName": "edit",
"data": {}
}
//parms.data最后需要转成“字符串”传到后台,赋值的时候需要转成“json”状态,然后赋值
let type = dsf.type(this.parms.data);
this.parms.data["_id"] = this.messdata._id;
if(type === 'object'){
this.parms.data = JSON.stringify(this.parms.data)//转字符串
}
this.dsf.http.post('teas/mobile/meta/persistData', _this.parms).done((res) => {
if(res.success){
this.dsf.layer.toast(res.message);
}else{
this.dsf.layer.toast(res.message);
}
_this.parms.data = JSON.parse(_this.parms.data);//转json
}).error((res) => {
this.dsf.layer.toast(res.message);
})
2020/04/03 追加
用charAt()获取字符串中的字符(有些时候可以代替多层if(){}else if(){} 和switch_case )
function returnWeekday (){
return "今天是星期" + "日一二三四五六".charAt ( new Date().getDay() );
}
console.log( returnWeekday() );
2020/08/08 追加
1、获取地址的参数
function UrlSearch() {
var name, value;
var str = location.href; //取得整个地址栏
var num = str.indexOf("?")
str = str.substr(num + 1); //取得所有参数 stringvar.substr(start [, length ]
var arr = str.split("&"); //各个参数放到数组里
for(var i = 0; i < arr.length; i++) {
num = arr[i].indexOf("=");
if(num > 0) {
name = arr[i].substring(0, num);
value = arr[i].substr(num + 1);
this[name] = decodeURI(value);
}
}
}
var Git = new UrlSearch(); //实例化
console.log(Git.name); // dong
效果
2、如果在iframe页面中执行,需要修改成获取父级的整个地址栏
//iframe中获取父级地址栏的参数值
function UrlSearch() {
var name, value;
var str = window.parent.document.location.href; //取得整个父级地址栏
var num = str.indexOf("?")
str = str.substr(num + 1); //取得所有参数 stringvar.substr(start [, length ]
var arr = str.split("&"); //各个参数放到数组里
for(var i = 0; i < arr.length; i++) {
num = arr[i].indexOf("=");
if(num > 0) {
name = arr[i].substring(0, num);
value = arr[i].substr(num + 1);
this[name] = decodeURI(value);
}
}
}
var Git = new UrlSearch(); //实例化
console.log(Git.age); // 18
2021/05/10 追加
编码之后的字符串重新解析成对象数组
事项相关方法
decodeURI("","UTF-8");
unescape();
JSON.parse();
var Group = dsf.getCookie("allGroup");
var newGroup = unescape(Group);
var garr=JSON.parse(newGroup)
var glist = [];
for(var i=0;i<garr.length;i++){
if(glist.indexOf(garr[i].code) == -1){
glist.push(garr[i].code)
}
}
//如果有001,并且条数大于1才显示,其他都不显示
if(glist.indexOf('001')!=-1 && glist.length>1){
console.log('显示');
}else{
console.log('隐藏')
}
2022/03/15追加
encodeURI('/meta/list/data?pageNum=1&pageSize=7&query=%7B"searchValue"%3A""%7D&order=%5B%5D&filter=%5B%5D&namespace=nc.courses.page&pageName=indexCourse')
'/meta/list/data?pageNum=1&pageSize=7&query=%257B%22searchValue%22%253A%22%22%257D&order=%255B%255D&filter=%255B%255D&namespace=nc.courses.page&pageName=indexCourse'
decodeURI('/meta/list/data?pageNum=1&pageSize=999&query=%257B%22searchValue%22%253A%22%22%257D&order=%255B%255D&filter=%255B%255D&namespace=nc.courses.page&pageName=indexCourse')
'/meta/list/data?pageNum=1&pageSize=999&query=%7B"searchValue"%3A""%7D&order=%5B%5D&filter=%5B%5D&namespace=nc.courses.page&pageName=indexCourse'
20220513追加
encodeURI('/meta/list/data?pageNum=1&pageSize=7&query={"searchValue":""}&order=[]&filter=[]&namespace=nc.courses.page&pageName=indexCourse')
'/meta/list/data?pageNum=1&pageSize=7&query=%7B%22searchValue%22:%22%22%7D&order=%5B%5D&filter=%5B%5D&namespace=nc.courses.page&pageName=indexCourse'
2022/10/14追加
获取数组中60及以上的值
let arr = [46,51, 60, 61, 80, 81];
let arr2 = arr.filter(num => num > 59);
console.log(arr2) // [60, 61, 80, 81]
获取对象数组中60及以上的值
let arr = [
{name:'小明',fen:46},
{name:'小张',fen:51},
{name:'小李',fen:60},
{name:'小赵',fen:61},
{name:'小钱',fen:80},
{name:'小孙',fen:81}
];
let arr2 = arr.filter(item => item.fen>59);
得到的数组中每一项添加一个单位
只获取数组中第一个达到60分的那条数据
得到小钱的下标
快速获取键 数组
let arr={
'一班':[{name:"小白"},{name:"小赵"}],
'二班':[{name:"小红"},{name:"小李"}],
'三班':[{name:"小绿"},{name:"小钱"}]
}
console.log(arr)
let data=[]
Object.keys(arr).forEach(key=>{
if(key=='二班'){
data = arr[key]
}
})
console.log('二班有这些人',data)
2022/12/02追加
判断一个值是否在二维数组中,并得到当前所在数组
let code = 66
let arr=[
[11,22,33,44],
[55,66,77,88],
[99,110106,100],
]
let codeRow = []
for(var i=0,len=arr.length;i<len;i++){
for(var j=0,len=arr[i].length;j<len;j++){
if(arr[i][j]==code){
codeaRow = arr[i]
}
}
}
console.log(codeaRow) //[55,66,77,88]
返回数据中找到value为55,66,77,88的值,得到一个新的数组
let codeRow = [55, 66, 77, 88]
let arr = [
{name:'小明',value:55,fen:88},
{name:'小明',value:66,fen:89},
{name:'小明',value:88,fen:90},
{name:'小明',value:77,fen:95},
{name:'小明',value:86,fen:95},
{name:'小明',value:44,fen:99},
{name:'小明',value:22,fen:95},
{name:'小明的',value:33,fen:97}
]
let newArr = []
for(var i=0,len=codeRow.length;i<len;i++){
for(var z=0,len=arr.length;z<len;z++){
if(arr[z].value == codeRow[i]){
newArr.push(arr[z])
}
}
}
console.log(newArr)
得到数组后进行排序,取第一个值,(最大值)
call,apply
replace应用
接口返回的数据处理后再使用
需求:1、名称为“北京经济技术开发区”时,改为“经开区”
2、季度数据统一格式
var data = [{
"name": "地区生产总值",
"V": "489.5",
"area": "东城区",
"time":"2022年01季度"
},
{
"name": "地区生产总值",
"V": "489.5",
"area": "西城区",
"time":"2022年二季度"
},{
"name": "地区生产总值",
"V": "489.5",
"area": "丰台区",
"time":"2022年三季度"
},
{
"name": "地区生产总值",
"V": "489.5",
"area": "北京经济技术开发区",
"time":"2022年04季度"
}]
let NewData = []
NewData = data.filter(item=>{
if(item.area == '北京经济技术开发区') {
item.area = item.area.replace(item.area,'经开区')
}
if(item.time.indexOf('一')!=-1)item.time = item.time.replace('一','01')
if(item.time.indexOf('二')!=-1)item.time = item.time.replace('二','02')
if(item.time.indexOf('三')!=-1)item.time = item.time.replace('三','03')
if(item.time.indexOf('四')!=-1)item.time = item.time.replace('四','04')
return item
})
console.log(NewData)
slice应用
接口返回的所有数据只展示前3名的数据
var data = [{"area": "东城区"},{"area": "西城区"},{"area": "丰台区"},{"area": "经开区"},{"area": "通州区"},{"area": "朝阳区"}]
let three = data.slice(0,3)
console.log(three)
“其他项放在最后”
应用场景:饼状图把其他项排在最后
let arr = [
{name:'小明',fen:46},
{name:'小张',fen:51},
{name:'小李',fen:60},
{name:'其他',fen:65},
{name:'小钱',fen:80},
{name:'小孙',fen:81}
];
let lastitem = arr.filter(item => item.name=='其他');
let ind = arr.findIndex(item => item.name == '其他');
arr.splice(ind,1)
arr.push(lastitem[0])
console.log(arr)