多行字符串的写法
- 如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠。
var longString = "Long \
long \
long \
string";
longString
// "Long long long string"
加了反斜杠以后,原来写在一行的字符串,可以分成多行,效果与写在同一行完全一样。注意,反斜杠的后面必须是换行符,而不能有其他字符(比如空格),否则会报错。
- 连接运算符(+)可以连接多个单行字符串,用来模拟多行字符串。
var longString = 'Long '
+ 'long '
+ 'long '
+ 'string';
反斜杠在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。
如果字符串的正常内容之中,需要包含反斜杠,则反斜杠前需要再加一个反斜杠,用来对自身转义。
var path = "C:\\games\\war3\\"
- ES6扩展
var str = `
你好
这里是饥人谷
jirengu.com
开启你的前端之路
`
Math
写一个函数,生成一个随机 IP 地址,一个合法的 IP 地址为 0.0.0.0~255.255.255.255
function getRandIP(){
var arr=[];
for(var i=0; i<4; i++){
arr.push(Math.floor(Math.random()*256))
}
return arr.join(".")
}
var ip = getRandIP()
console.log(ip)
写一个函数,生成一个随机颜色字符串,合法的颜色为#000000~ #ffffff。
//方法一
function getRandColor(){
var color = '#';
var dict = '0123456789abcdef';
for (var i=0; i <6; i++){
color += dict[parseInt(Math.random() *16)];
}
return color;
}
var color = getRandColor()
console.log(color)
//方法二
function getRandColor() {
var randomStr = "#";
for(var i = 0; i < 6; i++) {
randomStr += (Math.floor(Math.random() * 16)).toString(16);
}
return randomStr;
}
var color = getRandColor()
console.log(color)
写一个函数,返回从min到max之间的 随机整数,包括min不包括max 。
function friendlyDate(time){
var t = Date.now() - time;
switch(true){
case t >= 0 && t < 60*1000 :
console.log('刚刚');
break;
case t >= 60*1000 && t < 3*60*1000 :
console.log('3分钟前');
break;
case t >= 3*60*1000 && t < 24*60*60*1000 :
console.log('8小时前');
break;
case t >= 24*60*60*1000 && t < 30*24*60*60*1000 :
console.log('3天前 ');
break;
case t >= 30*24*60*60*1000 && t < 12*30*24*60*60*1000 :
console.log('2个月前');
break;
case t >= 12*30*24*60*60*1000 :
console.log('8年前');
break;
default :
console.log('输入时间有误');
}
}
var str = friendlyDate( '1534591087999' );
var str2 = friendlyDate('1534391087999');
实现一个reduce函数,作用和原生的reduce类似下面的例子。
EX:var sum = reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0); => 6
function newReduce(arr, iteratee, initValue){
var tmpArr = (initValue === undefined ? [] : [initValue]).concat(arr);//判断是否有原始值
while(tmpArr.length > 1){
tmpArr.splice(0, 2, iteratee(tmpArr[0], tmpArr[1]));
}
return tmpArr[0];
}
var sum = newReduce([1, 2, 3], function(memo, num){ return memo + num; }, 0);
console.log(sum);
实现一个flatten函数,将一个嵌套多层的数组 array(数组) (嵌套可以是任何层数)转换为只有一层的数组,数组中元素仅基本类型的元素或数组,不存在循环引用的情况。
Ex:flatten([1, [2], [3, [[4]]]]) => [1, 2, 3, 4];
- 方法一:concat
function flatten(arr) {
var result = [];
arr.forEach(function(value, index, array) {
if(Array.isArray(value)) {
result = result.concat(flatten(value));
} else {
result = result.concat(value);
}
});
return result;
}
- 方法二:闭包
function flatten(arr) {
var result = [];
function _flatten(arr) {
arr.forEach(function(value, index, array){
if(Array.isArray(value)) {
_flatten(value);
} else {
result.push(value);
}
});
}
_flatten(arr);
return result;
}
- 方法三:reduce
function flatten(arr) {
return arr.reduce(function(a, b){
if(Array.isArray(b)) {
return a.concat(flatten(b));
} else {
return a.concat(b);
}
},[]);
}
function newFlatten(arr){
return arr.reduce(function(initArr, currentArr){
return initArr.concat(Array.isArray(currentArr) ? newFlatten(currentArr) : [currentArr]);
} ,[]);
}
var result = newFlatten([1, [2], [3, [[4]]]]);
console.log(result);//
写一个函数,操作数组,返回一个新数组,新数组中只包含正数。
function filterPositive(arr){
var arr1 = []
for(var i = 0;i < arr.length;i++){
if(typeof arr[i] === 'number' && arr[i] > 0){
arr1.push(arr[i])
}
}
return arr1
}
var arr = [3, -1, 2, '饥人谷', true]
filterPositive(arr)
console.log(filterPositive(arr))
用 splice函数分别实现 push、pop、shift、unshift方法。
如:
function push(arr, value){
arr.splice(arr.length, 0, value)
return arr.length
}
var arr = [3, 4, 5]
arr.push(10) // arr 变成[3,4,5,10],返回4
改进版
function push(arr){
for(var i=1; i<arguments.length;i++){
arr.splice(arr.length, 0, arguments[i])
}
return arr.length
}
//下面的写法有兴趣的同学可自行了解 //http://es6.ruanyifeng.com/#docs/array
function push(arr, ...args){
arr.splice(arr.length, 0, ...args)
return arr.length
}
实现push方法
function newPush(arr){
for(var i=1; i<arguments.length;i++){
arr.splice(arr.length, 0, arguments[i])
}
return arr.length
}
var arr = [3, 4, 5]
console.log(arr.push(10));//4
console.log(arr);//[3, 4, 5, 10]
console.log(newPush(arr, 12));//5
console.log(arr);//[3, 4, 5, 10, 12]
实现pop方法
function newPop(arr){
return arr.splice(arr.length-1, 1)[0]//需要返回数组的元素值,添加[0]
}
var arr = [3, 4, 5]
console.log(arr.pop());//5
console.log(arr);//[3, 4]
console.log(newPop(arr));//4
console.log(arr);//[3]
实现shift方法
function newShift(arr){
return arr.splice(0, 1)[0];
}
var arr = [3, 4, 5]
arr.shift();//
console.log(arr);//[4, 5]
newShift(arr);//
console.log(arr);//[5]
实现unshift方法
function newUnshift(arr, value){
arr.splice(0, 0, value);
return arr.length;
}
var arr = [3, 4, 5]
console.log(arr.unshift(10));//4
console.log(arr);//[10, 3, 4, 5]
console.log(newUnshift(arr, 20));//5
console.log(arr);//[20, 10, 3, 4, 5]
对以下代码 users中的对象,分别以 name 字段、age 字段、company 字段进行排序
var users = [
{ name: "John", age: 20, company: "Baidu" },
{ name: "Pete", age: 18, company: "Alibaba" },
{ name: "Ann", age: 19, company: "Tecent" }
]
var sortByAge = users.sort(function(v1, v2){
return v1.age > v2.age
})///以 age 字段排序
console.log(users)
var sortByName = users.sort(function(v1, v2){
return v1.name > v2.name
})//以 name 字段排序
console.log(users)
var sortByCompany = users.sort(function(v1, v2){
return v1.company > v2.company
})///以 company 字段排序
console.log(users)
网友评论