JS实现对货币格式化函数
1.// 调用示例
2. formatMoney(1234567890); // 返回 1,234,567,890
function formatMoney(str){
var result = '';
var counter = 0;
num = num.toString();
for (var i = num.length - 1; i >= 0; i--) {
counter++;
result = num.charAt(i) + result;
if (!(counter % 3) && i != 0) { result = ',' + result; }
}
return result;
//还有一种正则的表示方式
return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
// (?=):正向零宽断言
// \d{3}:匹配三个数字字符
// +:与前面的\d{3}结合表示匹配3的整数倍个数字字符
// $:字符串结尾
// 所以合起来的意思就是:匹配单词中的某个位置,这个位置之后的字符全部为数字,且出现次数是3的整数倍。
}
返回数组里出现次数最多的数字
- // 调用示例
- MostNumber([1, 2, 2, 1, 3, 1, 1]); // 返回 1
function MostNumber(arr){
var obj = {};
for (var i = 0; i < arr.length; i++) {
var res = arr[i]
if (obj[res] == undefined) {
obj[res] = 1;
} else {
obj[res] += 1;
}
}
console.log(obj);
var max = '0'
var maxValue = 0;
for (var k in obj) {
if (maxValue < obj[k]) {
max = k;
maxValue = obj[k]
}
}
console.log(`出现最大的数为${max},次数为${maxValue}`);
}
请写出以下代码的执行结果
1. setTimeout(function() {
2. console.log('setTimeout');
3. })
4. new Promise(function(resolve) {
5. console.log('promise');
6. for (let i = 0; i < 10000; i++){
7. if(i === 10) {
8. console.log('for');
9. }
10. i == 9999 && resolve('resolve');
11. }
12. }).then(function(val) {
13. console.log(val);
14. })
15. console.log('console');
盲点:
promise是一个同步任务,promise.then是一个异步任务
promise里面的resolve是微任务先执行,setTimeout是宏任务后执行
结果为:
promise->for->console->resolve->setTimeout
以下是一个页面的代码,请写出用户点击了div后控制台的输出结果
1. <body>
2. <div id="i"/>
3. </body>
4.
5. <script>
6. document.body.addEventListener("mousedown", () => {
7. console.log("key1")
8. }, true)
9.
10. document.getElementById("i").addEventListener("mousedown", () => {
11. console.log("key2")
12. }, true)
13.
14. document.body.addEventListener("mousedown", () => {
15. console.log("key3")
16. }, false)
17.
18. document.getElementById("i").addEventListener("mousedown", () => {
19. console.log("key4")
20. }, false)
21. </script>
涉及到的知识点:
element.addEventListener(event, function, useCapture)
结果为:
key1->key2->key4->key3
写出以下代码执行结果,并简单解释
1. function showName() {
2. console.log('Toutiao');
3. }
4. showName();
5. function showName() {
6. console.log('OceanEngine');
7. }
8. showName();
9. // ----
10. var myname = "abc"
11. function showName2(){
12. console.log(myname);
13. var myname = "aabbcc"
14. console.log(myname);
15. }
16. showName2();
17. // ----
18. let myname3= 'toutiao'
19. {
20. console.log(myname3)
21. let myname3= 'oceanengine'
22. }
涉及到的知识点:
声明变量提生,函数声明提生
结果:
‘OceanEngine’,‘OceanEngine’,undefined,aabbcc,报错
JS cookie访问指定key的value值的方法
/* 定义一个cookie并给其设置一部分数据 */
document.cookie = "key1 = value1";
document.cookie = "key2 = 1234abcd";
var d = new Date();
d.setDate(d.getDate() + 3); //按天数设置
document.cookie = "key3 = 中国人民共和国万岁; expires=" + d;//即使设置了expires有效期/domain域名/path目录;也不影响使用
document.cookie = 'key4 ='+escape('123; abc=23;@#$%');//编码,避免数据中的特殊字符"; "和"="对字符串切割出错
/* 获得cookie字符串 */
var cookieString = document.cookie;
//console.log(cookieString);//key1=value1; key2=value2; key3=value3
// console.log(typeof cookieString);//string
/* 用.split()的方法切割字符串 返回一个数组cookieArr*/
var cookieArr = cookieString.split("; ")//在返回的cookie字符串cookieString中,每条cookie值以"; "分隔(注意分号";"后面有空格" ")
// console.log(cookieArr);
// console.log(typeof cookieArr);//返回一个数组 object
/* 切割cookieArr数组,并将值保存在对象cookies中 */
var cookies = {};
for (let i = 0; i < cookieArr.length; i++) {
let cookieKey = cookieArr[i].split("=")[0];
// let cookieValue = cookieArr[i].split("=")[1];
let cookieValue = unescape(cookieArr[i].split("=")[1]);//解码
cookies[cookieKey] = cookieValue;
}
/* 验证:用对象的方法查询cookies对象即可 */
document.write("key1 的值为: "+cookies.key1+"<br>");
document.write("key2 的值为: "+cookies.key2+"<br>");
document.write("key3 的值为: "+cookies.key3+"<br>");
document.write("key4 的值为: "+cookies.key4+"<br>");
// document.write("打印所有key和其对应的value值: "+cookies+"<br>");
console.log('打印所有key和其对应的value值:');
console.log(cookies);
结果: