字符串
指定位置添加指定字符
const str = "中国中央电视台中央广播电视";
function subStr (str){
// 设置变量存储返回值
let newstr = "";
// 如果长度超过5,就要截取插入字符
if(str.length > 5) {
// 第一次截取
newstr = str.slice(0, 5) + "\n";
// 闭包再次调用,如果截取后的字段长度依然超过5,再次调用,如果没有直接返回当前值
return newstr + subStr(str.slice(5));
} else {
// 直接返回当前值
return str
}
}
console.log(subStr(str))
js控制字符串超出部分显示“更多”
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>js控制显示字符</title>
</head>
<body>
<div class="box">我还没超出哟</div>
<div class="box">真的很抱歉,我超出最大长度,可能有一部分不显示了呢</div>
</body>
<script type="text/javascript" src="https://blog-static.cnblogs.com/files/wh35/jquery-3.2.1.min.js" ></script>
<script type="text/javascript">
$(".box").each(function () {
var str = $(this).html()
var subStr = str.substring(0, 10)
$(this).html(
subStr +
(str.length > 10
? "..." + "<a href='#' class='active'>查看更多</a>"
: "")
)
})
</script>
</html>
数字
判断一个数字是否是回文数字
回文数字:指正序和倒序读一样的数字;例如 12321、1221 是回文数,1234不是回文数
- 使用string
const num = 7121217
function isPalindromeNumber(num) {
// 使用string的方式
const arr = num.toString().split('')
let reversal = []
for (let index = 0; index < arr.length; index++) {
reversal.unshift(arr[index])
}
const reversalNum = Number(reversal.join(''))
console.log(reversalNum === num);
}
isPalindromeNumber(num)
- 不使用string
const num = 121219
function isPalindromeNumber(num) {
// 不使用string的方式
if(num < 0) console.log(false)
else {
let arr = [];
// 将数字转成数组
while (num){
arr.unshift(num % 10);
num = parseInt(num /10)
}
// 将数组反转
let newArr = []
for (let index = 0; index < arr.length; index++) {
newArr.unshift(arr[index])
}
let flag = true
// 循环判断反转前后的数组是否相同
for (let index = 0; index < newArr.length; index++) {
if( newArr[index] !== OldArr[index]) {
flag = false
break
}
}
console.log(flag);
}
}
isPalindromeNumber(num)
js格式数字金额(四舍五入保留两位小数)
function outputmoney(number) {
number = number.replace(/\,/g, "");
if(isNaN(number) || number == "")return "";
number = Math.round(number * 100) / 100;
if (number < 0)
return '-' + outputdollars(Math.floor(Math.abs(number) - 0) + '') + outputcents(Math.abs(number) - 0);
else
return outputdollars(Math.floor(number - 0) + '') + outputcents(number - 0);
}
//格式化金额
function outputdollars(number) {
if (number.length <= 3)
return (number == '' ? '0' : number);
else {
var mod = number.length % 3;
var output = (mod == 0 ? '' : (number.substring(0, mod)));
for (i = 0; i < Math.floor(number.length / 3); i++) {
if ((mod == 0) && (i == 0))
output += number.substring(mod + 3 * i, mod + 3 * i + 3);
else
output += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
}
return (output);
}
}
function outputcents(amount) {
amount = Math.round(((amount) - Math.floor(amount)) * 100);
return (amount < 10 ? '.0' + amount : '.' + amount);
}
// 测试
console.log(outputmoney(1000)); // 100.00
console.log(outputmoney(1000.191)); // 1,000.19
console.log(outputmoney(1000.199)); // 1,000.20
数组
提取数组中指定参数,并返回该参数的集合
- 应用场景:在一个数组对象中想要直接获取某个参数值的集合
getFiledArr(arrs, paramsname) {
let arr = [];
arr = arrs.map(d => d[paramsname]) || [];
return arr;
}
const datas = [
{
"ItemName": "账面原值(万元)",
"ItemValue": "901.00",
"ItemOldValue": "903.00",
},
{
"ItemName": "土地账面原值(万元)",
"ItemValue": "991.00",
"ItemOldValue": "905.00",
}
];
console.log("ItemName集合:", getFiledArr(datas, 'ItemName'));
console.log("ItemValue集合:", getFiledArr(datas, 'ItemValue'));
传入指定对象数组,就算某个参数的总和
/**
* 求和
* @param {*} arr 数组
* @param {*} params 求和参数
* @memberof PsurveyContainerComponent
*/
computeTotal(arr, params) {
let total = 0;
total = arr.reduce((acc, cur) => {
return acc + (cur[params] || 0)
}, 0)
return total
};
const datas = [
{ name: "数学", fraction: 130 },
{ name: "语文", fraction: 140 },
{ name: "英语", fraction: 125 },
{ name: "理综", fraction: 280 }
]
console.log("总成绩:", computeTotal(datas, 'fraction') )
提取指定数组中,对象指定的两个参数组合,并返回字符串
function getFiledValueStr(arr, filedname, filedvalue) {
let str = "";
arr.map((d,i) => {
const strname = d[filedname] + ":" + d[filedvalue];
if (i !== 0) str += ("," + strname);
else str += strname;
})
return str
}
const datas = [
{
"ItemName": "账面原值(万元)",
"ItemValue": "901.00",
"ItemOldValue": "903.00",
},
{
"ItemName": "土地账面原值(万元)",
"ItemValue": "991.00",
"ItemOldValue": "905.00",
}
];
console.log("变更前:", getFiledValueStr(datas, 'ItemName', 'ItemOldValue'));
console.log("变更后:", getFiledValueStr(datas, 'ItemName', 'ItemValue'));
数组中日期排序
// 原数组
var timeArr=[
{'id':'A01','date':'2016-04-20 23:22:11'},
{'id':'A02','date':'2016-04-21 21:00:11'},
{'id':'A03','date':'2016-04-23 22:00:22'},
{'id':'A04','date':'2016-04-19 12:22:00'},
{'id':'A05','date':'2016-02-19 11:11:00'}
];
timeArr.sort(function(a,b) {return Date.parse(b.date.replace(/-/g,"/"))-Date.parse(a.date.replace(/-/g,"/"));});
根据数组第三级数据特定参数排序
使用的format.js文件地址:format.js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
<script src="./format.js">
</script>
<script>
/**
* 本方法的功能,实现根据第三级数据的iriscode进行正序排序,即:三级为111,则对应的二级和一级排到第一位。根据三级的code值决定二级的正序位置和一级的正序位置
*/
function sortData(data) {
// 遍历主数据
let newData = data.map(item => {
// 取出一级数据的子集(二级数据)
let itemChildrens = item.children || []
// 遍历子集(二级数据)
itemChildrens = itemChildrens.map(son => {
// 取出二级数据的子集(三级数据)
let sonChildrens = son.children || []
// sonChildrens = sonChildrens.sort((a,b) => a.iriscode - b.iriscode ) // 如果当前三级的iriscode是乱序的话,需要手动排序,执行此代码!
// 取出三级数据中的第一个iriscode作为二级数据排序的tabIndex(依据)。当前提供的数据,第三级的iriscode都是正序排序后的,如果当前三级的iriscode是乱序的话,需要手动排序。
let tabIndex = sonChildrens[0].iriscode
return { ...son, tabIndex }
})
// 对一级数据中的子集(二级数据)进行正序排序,排序的依据是tabIndex(依据)
itemChildrens = itemChildrens.sort((a,b) => a.tabIndex - b.tabIndex)
// 取出一级数据的子集(二级数据)中的第一个tabIndex作为一级数据排序的tabIndex(依据)。
return { ...item, children: itemChildrens, tabIndex: itemChildrens[0].tabIndex }
})
// 对一级数据进行正序排序,排序的依据是tabIndex(依据)
newData = newData.sort((a,b) => a.tabIndex - b.tabIndex)
// 返回排序的结果
return newData
}
console.log('原始数据', data)
console.log('排序后的数据', sortData(data));
</script>
</html>