前端数据类型总结
来源:互联网 发布:数据分析 市场 编辑:程序博客网 时间:2024/06/05 04:49
{
function aa() {
var a = b = c = 123 // b,c 变为全局变量
console.log(a, b, c) // 123, 123, 123
}
aa()
console.log(a, b, c) // undefined, 123, 123
}
{
var a = '100'
var b = ''
var c = 0
var d = "0" //字符串为真
var e = null
var f = undefined
var g = 100
var h = NaN
if (a) {
console.log('"100"', 'ture')
} else {
console.log('"100"', 'false')
}
if (b) {
console.log('空', 'ture')
} else {
console.log('空', 'false')
}
if (c) {
console.log('0', 'ture')
} else {
console.log('0', 'false')
}
if (d) {
console.log('"0"', 'ture')
} else {
console.log('"0"', 'false')
}
if (e) {
console.log('null', 'ture')
} else {
console.log('null', 'false')
}
if (f) {
console.log('undefined', 'ture')
} else {
console.log('undefined', 'false')
}
if (g) {
console.log('100', 'ture')
} else {
console.log('100', 'false')
}
if (h) {
console.log('NaN', true)
} else {
console.log('NaN', false)
}
}
{
console.log(isNaN(123)) // false
console.log(isNaN(-1.23)) // false
console.log(isNaN(5 -2)) // false
console.log(isNaN(0)) // false
console.log(isNaN('limingyang')) // true
console.log(isNaN('222')) // false
console.log(isNaN('222/222/222')) // true
console.log(typeof NaN) // 'number'
console.log(parseInt('aaaa')) // NaN
console.log(parseFloat('aaaa')) // NaN
}
{
var a = 100
console.log(!!a) // true
console.log(10 && 0) //0
console.log('' || 'abc') // abc
console.log(window.abc) //undefined
console.log(!window.abc) //true
console.log(null)
console.log(undefined)
console.log(!null) // true
console.log(!undefined) // true
console.log(!null === !undefined) // true
console.log(null == undefined) // true
console.log(undefined == '') // false
}
{
let num = 123
let num1 = '123'
console.log(num != num1)
console.log(num !== num1)
}
{
let obj = {
b: 100
}
console.log(obj.a == null) // ture 等价于obj.a === null || obj.a === undefined Jquery源码推荐写法
}
{
// 内置函数
console.log(Object, Array, Boolean, Number, String, Function, Date, RegExp, Error)
// 内置对象
console.log(Math, JSON)
}
{
// 数组判断
console.log([], ![], [] == ![], [] == false, ![] == false, [] == null)
}
{
// 对象判断
let obj = new Object()
let obj1 = new Object()
console.log(obj == obj1) // false
}
{
console.log('2222222222')
console.log(Number(undefined)) // NaN
console.log(Number(null)) // 0
console.log(Number('abc')) // NaN
console.log(Number('123')) // 123
}
{
// toString
let num = 123
console.log(num.toString() + 11) // "123" + 11 => "12311"
let a1 = true
console.log(a1.toString() + "this is true")
console.log(a2.toString())
}
{
// Array:返回数组对象本身
var array = ["CodePlayer", true, 12, -5];
document.writeln( array.valueOf() === array ); // true
// Date:当前时间距1970年1月1日午夜的毫秒数
var date = new Date(2013, 7, 18, 23, 11, 59, 230);
document.writeln( date.valueOf() ); // 1376838719230
// Number:返回数字值
var num = 15.26540;
document.writeln( num.valueOf() ); // 15.2654
// 布尔:返回布尔值true或false
var bool = true;
document.writeln( bool.valueOf() === bool ); // true
// new一个Boolean对象
var newBool = new Boolean(true);
// valueOf()返回的是true,两者的值相等
document.writeln( newBool.valueOf() == newBool ); // true
// 但是不全等,两者类型不相等,前者是boolean类型,后者是object类型
document.writeln( newBool.valueOf() === newBool ); // false
}
{
let str = '123456789'
console.log(typeof(str))
console.log(str.length)
console.log(str.indexOf('4')) // 3 str.indexOf('4', 2) 从第二位开始查找
console.log(str.charAt(3)) // 4
let str1 = 'abcdefgh'
console.log(str1.charAt(0)) //
console.log(str1.charCodeAt(0), str1.charCodeAt(1), str1.charCodeAt(2)) // 97 98 99
// 数字排序
function charAtSort (a, b) {
return a - b
}
// 字母排序
function charCodeAtSort(a, b) {
return a.charCodeAt(0) - b.charCodeAt(0)
}
let arr = [3, 4, 6, 2, 6, 2, 4, 1, 6]
console.log(arr.sort(charAtSort))
let arr1 = ['q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m']
console.log(arr1.sort(charCodeAtSort))
}
{
let str = 'abcdef'
let str1 = 'ghijklmn'
console.log(str.split('c')) // ['ab', 'def'] 第二个参数为分割次数
let strx = 'abcd'
let arrx = ['a', 'b', 'c', 'd']
console.log(arrx.slice(1, 3)) // ['b', 'c']
console.log(strx.slice(1, 3)) // 'bc'
//slice 即可用于数组,又可用于字符串
console.log(str.slice(2) + 3) // "cdef" + 3 => "cdef3"
console.log(str.slice(2, 4)) // "cd"
console.log(str.substring(2)) // "cdef"
console.log(str.substring(2, 4)) // "cd"
console.log(str.substr(2)) // "cdef"
console.log(str.substr(0, 2)) // "ab" 第二位为截取长度
console.log(str.slice(-3)) // "def" slice 从-3开始截取后面的元素
console.log(str.slice(3, -1)) // "de" slice 从3开始,末位从后开始计算
console.log((str.slice(3, -3)) === '') // 当从尾计算到首位前面时,结果为空字符串,type仍为string
console.log(str.substring(-3)) // "abcdef" 将负数转换为0
console.log(str.substring(3, -1)) // "abc" subtring会自动转换两个参数的大小位置,改为(-1, 3) 即 (0, 3)
console.log(str.substr(-3)) // "def" 与slice相似
console.log(str.substr(-3, -1) === '') // 当第二个参数为负数,结果为空字符串,type为string
console.log(str.toUpperCase()) //大写
console.log(str.toLowerCase()) //小写
console.log(str.split('').join('-')) // 'a-b-c-d-e-f'
let arr = ['abc', 'def', 'ghi', 'jkl']
let arr1 = [123, 456, 789, 0]
console.log(arr.join('')) // 连接数组中的元素
console.log(arr1.join('') === arr1.join('').toString()) // '1234567890'
console.log(arr.reverse()) // 数组元素反排序
console.log(arr.concat(arr1)) //concat用于连接数组
console.log(arr.slice())
let arr = [1,2,3,4,5,6,7]
console.log(arr.splice(2, 2)) // [3, 4]
console.log(arr) // [1, 2, 5, 6, 7]
console.log(arr.splice(2, 2, 'ddd')) // [5, 6]
console.log(arr) // [1, 2, 'ddd', 7]
console.log(arr.splice(-1, 1, 'a')) // [7]
console.log(arr) // [1, 2, 'ddd', 'a']
//数组命名方式
let arr2 = new Array()
let arr3 = new Array(3)
let arr4 = new Array('a', 'ddd', 'eefds')
let arr5 = []
let arr6 = ['3', 'wef', 'sdf', 44]
}
//数组删减
{
let arr = ['a', 'b', 'c', 'd']
arr.push(1)
console.log(arr)
arr.unshift(2)
console.log(arr)
arr.pop()
arr.pop()
console.log(arr)
arr.shift()
console.log(arr)
arr.shift()
console.log(arr)
}
//数组替换
{
let arr = ['ab', 'bb', 'cd', 'ab', 'cc', 'ab', 'dd', 'ab']
console.log(arr.indexOf('ab'))
while (arr.indexOf('ab') !== -1) {
arr.splice(arr.indexOf('ab'), 1, '**')
}
console.log(arr)
while (arr.indexOf('**') !== -1) {
arr.splice(arr.indexOf('**'), 1)
}
console.log(arr)
}
// map 和 forEach, filter
{
let arr = [1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'd']
arr.forEach(function (item) {
if (item == 6) {
arr[arr.indexOf(item)] = 7
}
})
console.log(arr)
let arr1 = arr.map(function (item) {
return item + 'a'
})
console.log(arr1)
let arr2 = ['a', 'b', 'c', 'd']
let arr3 = arr2.filter(function (item) {
if (item == 'b') {
return "**"
}
})
console.log(arr3)
}
//every() some() 返回true或false
{
let arr = ['**', 'aaa', 123, 'abc', '-', 46, 'AAA']
console.log(arr.every(function (item) {
return typeof item == 'string'
}), 'every()')
}
{
let arr = ['**', 'aaa', 123, 'abc', '-', 46, 'AAA']
console.log(arr.some(function (item) {
return typeof item == 'number'
}), 'every()')
}
/**********************************************************************************************************/
/*
改变原数组的:
pop:删除最后一个并返回,改变原数组
push:向数组末尾添加元素,并返回新的长度,改变原数组
unshift:向数组开头添加元素,并返回新的长度,改变原数组
reverse:颠倒数组顺序,改变原数组
shift:将第一个元素删除并且返回,空即为undefined,改变原数组
splice:splice(start,length,item)新增删除替换数组元素,返回被删除数组,无删除则不返回,改变原数组
sort:对数组排序,改变原数组
不改变原数组的:
concat:连接多个数组,返回新的数组,不改变原数组
join:将数组中所有元素以参数作为分隔符放入一个字符串,不改变原数组
slice:slice(start,end),返回选定元素,不改变原数组
Number 和 parseInt parseFloat 区别:
Number():可以用于任何数据类型转换成数值;
parseInt()、parseFloat():专门用于把字符串转换成数值;
isNaN 用于检测值是否 不是数字
*/
/**********************************************************************************************************/
// 题型
// 一 数组与字符串相互转换
{
// 字符串倒序
let str = 'www.limingyang.com'
console.log(str.split('').reverse().join(''))
// 字符串倒序
let str1 = ''
for (let i = str.length; i > 0; i--) {
str1 += str.substring(i-1, i)
}
console.log(str1)
}
{
//数组去重
let arr = [1, 2, 3, 4, 3, 2, 4, 3, 2, 5, 6, 7, 8, 3, 5, 7, 3, 10, 9]
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1)
}
}
}
console.log(arr, '数组去重')
}
{
//查找字符串中的数字并替换
let str = 'abc234efghi'
let arr = str.split('')
for (let i = 0; i < str.length; i++) {
if (!isNaN(parseInt(arr[i]))) {
arr.splice(i, 1, '[' + arr[i] + ']')
}
}
str = arr.join('')
console.log(str)
}
{
//随机生成100个100到900之前的随机不重复整数
let arr = []
let len = 100
let num = Math.round(Math.random()*900 + 100)
arr[0] = num
for (let i = 1; i < 100; i++) {
let num = Math.round(Math.random()*900 + 100)
let flag = 0
for (let j = i - 1; j >= 0; j--) {
if (num === arr[j]) {
flag = 1
}
}
if (flag === 1) {
i--
} else {
arr[i] = num
}
}
console.log(arr)
}
{
// 排序算法
// 1.sort排序
function compare (a, b) {//
return a - b
if (a > b) {
return 1
} else if (a < b) {
return -1
} else {
return 0
}
}
let arr = [5, 1, 2, 6, 3, 8]
console.log(arr.sort(compare))
// 冒泡排序
let arr = [42, 20, 17, 13, 28, 14, 23, 15]
function nin (s) {
var tmp = ''
for (let i = 0; i < s.length - 1; i++) {
for (let k = s.length - 1; k > i; k--) {
if (s[k] < s[k-1]) {
tmp = s[k]
s[k] = s[k-1]
s[k-1] = tmp
}console.log(s, 'bbb')
}console.log(s, 'aaaaa')
}
console.log(s)
}
nin(arr)
}
{
//(1)替换的参数data为字面量对象,用toString()不能将其转成字符串,此处用JSON.stringify()将其序列化为字符串,注意我们要的是json字符串里的内容,故不要忘了去除“外包装”{}后再存储成数组。
// (2)json字符串里的键值都带有”“,我们要的是”“里的内容,故还要去”“操作,但数字值有一般不带”“,所以还要筛选出不是数字的值再操作,此处的易错点在于从一串包含数字的字符串中找出数字来是不能直接typeof parseInt(s)的,原因是parseInt()后非数字字符返回NaN,数字字符则返回数字本身,而typeof NaN和typeof 数字,得到的都是number,也不能用是否等于NaN来判断,因为NaN和数字都不等于NaN,所以此处要用isNaN()来分辨出NaN和数字,即非数字字符和数字。
// (3)去除字符串的“外包装”常用slice()或substring()
// (4)对字符串的某一部分操作可直接用正则表达式处理,也可以用split()将其转换成数组,再用splice()操作,最后用join()恢复成字符串。
var desc = '我是{name},我今年{age}岁,我在{city}市';
var data1 = {name: "张三", age: 25, city: "北京"};
var data2 = {name: "李四", age: 29, city: "上海"};
console.log(desc, data1, data2)
function result (dpl, data) {
var a = b = c = []
var res = []
a = dpl.split(',')
console.log(a)
console.log(JSON.stringify(data))
b = JSON.stringify(data).slice(1, this.length - 1).split(',')
console.log(b)
let b_len = b.length
for (let i = 0; i < b.length; i++) {
res[i] = b[i].split(':')[1]
//console.log(res[i], 'dddddd')
if (isNaN(parseInt(res[i]))) {
res[i] = res[i].slice(1, this.length - 1)
}
//方法一
c = a[i].split('')
let start = a[i].indexOf('{')
let end = a[i].indexOf('}')
c.splice(start, end - start + 1, res[i])
a[i] = c.join('')
//方法二
//var reg = /\{.*\}/
//a[i] = a[i].replace(reg.res[i])
}
console.log(res, 'res')
console.log(a.join(','), 'a')
return a.join(',')
}
result(desc, data1)
}
function aa() {
var a = b = c = 123 // b,c 变为全局变量
console.log(a, b, c) // 123, 123, 123
}
aa()
console.log(a, b, c) // undefined, 123, 123
}
{
var a = '100'
var b = ''
var c = 0
var d = "0" //字符串为真
var e = null
var f = undefined
var g = 100
var h = NaN
if (a) {
console.log('"100"', 'ture')
} else {
console.log('"100"', 'false')
}
if (b) {
console.log('空', 'ture')
} else {
console.log('空', 'false')
}
if (c) {
console.log('0', 'ture')
} else {
console.log('0', 'false')
}
if (d) {
console.log('"0"', 'ture')
} else {
console.log('"0"', 'false')
}
if (e) {
console.log('null', 'ture')
} else {
console.log('null', 'false')
}
if (f) {
console.log('undefined', 'ture')
} else {
console.log('undefined', 'false')
}
if (g) {
console.log('100', 'ture')
} else {
console.log('100', 'false')
}
if (h) {
console.log('NaN', true)
} else {
console.log('NaN', false)
}
}
{
console.log(isNaN(123)) // false
console.log(isNaN(-1.23)) // false
console.log(isNaN(5 -2)) // false
console.log(isNaN(0)) // false
console.log(isNaN('limingyang')) // true
console.log(isNaN('222')) // false
console.log(isNaN('222/222/222')) // true
console.log(typeof NaN) // 'number'
console.log(parseInt('aaaa')) // NaN
console.log(parseFloat('aaaa')) // NaN
}
{
var a = 100
console.log(!!a) // true
console.log(10 && 0) //0
console.log('' || 'abc') // abc
console.log(window.abc) //undefined
console.log(!window.abc) //true
console.log(null)
console.log(undefined)
console.log(!null) // true
console.log(!undefined) // true
console.log(!null === !undefined) // true
console.log(null == undefined) // true
console.log(undefined == '') // false
}
{
let num = 123
let num1 = '123'
console.log(num != num1)
console.log(num !== num1)
}
{
let obj = {
b: 100
}
console.log(obj.a == null) // ture 等价于obj.a === null || obj.a === undefined Jquery源码推荐写法
}
{
// 内置函数
console.log(Object, Array, Boolean, Number, String, Function, Date, RegExp, Error)
// 内置对象
console.log(Math, JSON)
}
{
// 数组判断
console.log([], ![], [] == ![], [] == false, ![] == false, [] == null)
}
{
// 对象判断
let obj = new Object()
let obj1 = new Object()
console.log(obj == obj1) // false
}
{
console.log('2222222222')
console.log(Number(undefined)) // NaN
console.log(Number(null)) // 0
console.log(Number('abc')) // NaN
console.log(Number('123')) // 123
}
{
// toString
let num = 123
console.log(num.toString() + 11) // "123" + 11 => "12311"
let a1 = true
console.log(a1.toString() + "this is true")
console.log(a2.toString())
}
{
// Array:返回数组对象本身
var array = ["CodePlayer", true, 12, -5];
document.writeln( array.valueOf() === array ); // true
// Date:当前时间距1970年1月1日午夜的毫秒数
var date = new Date(2013, 7, 18, 23, 11, 59, 230);
document.writeln( date.valueOf() ); // 1376838719230
// Number:返回数字值
var num = 15.26540;
document.writeln( num.valueOf() ); // 15.2654
// 布尔:返回布尔值true或false
var bool = true;
document.writeln( bool.valueOf() === bool ); // true
// new一个Boolean对象
var newBool = new Boolean(true);
// valueOf()返回的是true,两者的值相等
document.writeln( newBool.valueOf() == newBool ); // true
// 但是不全等,两者类型不相等,前者是boolean类型,后者是object类型
document.writeln( newBool.valueOf() === newBool ); // false
}
{
let str = '123456789'
console.log(typeof(str))
console.log(str.length)
console.log(str.indexOf('4')) // 3 str.indexOf('4', 2) 从第二位开始查找
console.log(str.charAt(3)) // 4
let str1 = 'abcdefgh'
console.log(str1.charAt(0)) //
console.log(str1.charCodeAt(0), str1.charCodeAt(1), str1.charCodeAt(2)) // 97 98 99
// 数字排序
function charAtSort (a, b) {
return a - b
}
// 字母排序
function charCodeAtSort(a, b) {
return a.charCodeAt(0) - b.charCodeAt(0)
}
let arr = [3, 4, 6, 2, 6, 2, 4, 1, 6]
console.log(arr.sort(charAtSort))
let arr1 = ['q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m']
console.log(arr1.sort(charCodeAtSort))
}
{
let str = 'abcdef'
let str1 = 'ghijklmn'
console.log(str.split('c')) // ['ab', 'def'] 第二个参数为分割次数
let strx = 'abcd'
let arrx = ['a', 'b', 'c', 'd']
console.log(arrx.slice(1, 3)) // ['b', 'c']
console.log(strx.slice(1, 3)) // 'bc'
//slice 即可用于数组,又可用于字符串
console.log(str.slice(2) + 3) // "cdef" + 3 => "cdef3"
console.log(str.slice(2, 4)) // "cd"
console.log(str.substring(2)) // "cdef"
console.log(str.substring(2, 4)) // "cd"
console.log(str.substr(2)) // "cdef"
console.log(str.substr(0, 2)) // "ab" 第二位为截取长度
console.log(str.slice(-3)) // "def" slice 从-3开始截取后面的元素
console.log(str.slice(3, -1)) // "de" slice 从3开始,末位从后开始计算
console.log((str.slice(3, -3)) === '') // 当从尾计算到首位前面时,结果为空字符串,type仍为string
console.log(str.substring(-3)) // "abcdef" 将负数转换为0
console.log(str.substring(3, -1)) // "abc" subtring会自动转换两个参数的大小位置,改为(-1, 3) 即 (0, 3)
console.log(str.substr(-3)) // "def" 与slice相似
console.log(str.substr(-3, -1) === '') // 当第二个参数为负数,结果为空字符串,type为string
console.log(str.toUpperCase()) //大写
console.log(str.toLowerCase()) //小写
console.log(str.split('').join('-')) // 'a-b-c-d-e-f'
let arr = ['abc', 'def', 'ghi', 'jkl']
let arr1 = [123, 456, 789, 0]
console.log(arr.join('')) // 连接数组中的元素
console.log(arr1.join('') === arr1.join('').toString()) // '1234567890'
console.log(arr.reverse()) // 数组元素反排序
console.log(arr.concat(arr1)) //concat用于连接数组
console.log(arr.slice())
let arr = [1,2,3,4,5,6,7]
console.log(arr.splice(2, 2)) // [3, 4]
console.log(arr) // [1, 2, 5, 6, 7]
console.log(arr.splice(2, 2, 'ddd')) // [5, 6]
console.log(arr) // [1, 2, 'ddd', 7]
console.log(arr.splice(-1, 1, 'a')) // [7]
console.log(arr) // [1, 2, 'ddd', 'a']
//数组命名方式
let arr2 = new Array()
let arr3 = new Array(3)
let arr4 = new Array('a', 'ddd', 'eefds')
let arr5 = []
let arr6 = ['3', 'wef', 'sdf', 44]
}
//数组删减
{
let arr = ['a', 'b', 'c', 'd']
arr.push(1)
console.log(arr)
arr.unshift(2)
console.log(arr)
arr.pop()
arr.pop()
console.log(arr)
arr.shift()
console.log(arr)
arr.shift()
console.log(arr)
}
//数组替换
{
let arr = ['ab', 'bb', 'cd', 'ab', 'cc', 'ab', 'dd', 'ab']
console.log(arr.indexOf('ab'))
while (arr.indexOf('ab') !== -1) {
arr.splice(arr.indexOf('ab'), 1, '**')
}
console.log(arr)
while (arr.indexOf('**') !== -1) {
arr.splice(arr.indexOf('**'), 1)
}
console.log(arr)
}
// map 和 forEach, filter
{
let arr = [1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'd']
arr.forEach(function (item) {
if (item == 6) {
arr[arr.indexOf(item)] = 7
}
})
console.log(arr)
let arr1 = arr.map(function (item) {
return item + 'a'
})
console.log(arr1)
let arr2 = ['a', 'b', 'c', 'd']
let arr3 = arr2.filter(function (item) {
if (item == 'b') {
return "**"
}
})
console.log(arr3)
}
//every() some() 返回true或false
{
let arr = ['**', 'aaa', 123, 'abc', '-', 46, 'AAA']
console.log(arr.every(function (item) {
return typeof item == 'string'
}), 'every()')
}
{
let arr = ['**', 'aaa', 123, 'abc', '-', 46, 'AAA']
console.log(arr.some(function (item) {
return typeof item == 'number'
}), 'every()')
}
/**********************************************************************************************************/
/*
改变原数组的:
pop:删除最后一个并返回,改变原数组
push:向数组末尾添加元素,并返回新的长度,改变原数组
unshift:向数组开头添加元素,并返回新的长度,改变原数组
reverse:颠倒数组顺序,改变原数组
shift:将第一个元素删除并且返回,空即为undefined,改变原数组
splice:splice(start,length,item)新增删除替换数组元素,返回被删除数组,无删除则不返回,改变原数组
sort:对数组排序,改变原数组
不改变原数组的:
concat:连接多个数组,返回新的数组,不改变原数组
join:将数组中所有元素以参数作为分隔符放入一个字符串,不改变原数组
slice:slice(start,end),返回选定元素,不改变原数组
Number 和 parseInt parseFloat 区别:
Number():可以用于任何数据类型转换成数值;
parseInt()、parseFloat():专门用于把字符串转换成数值;
isNaN 用于检测值是否 不是数字
*/
/**********************************************************************************************************/
// 题型
// 一 数组与字符串相互转换
{
// 字符串倒序
let str = 'www.limingyang.com'
console.log(str.split('').reverse().join(''))
// 字符串倒序
let str1 = ''
for (let i = str.length; i > 0; i--) {
str1 += str.substring(i-1, i)
}
console.log(str1)
}
{
//数组去重
let arr = [1, 2, 3, 4, 3, 2, 4, 3, 2, 5, 6, 7, 8, 3, 5, 7, 3, 10, 9]
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1)
}
}
}
console.log(arr, '数组去重')
}
{
//查找字符串中的数字并替换
let str = 'abc234efghi'
let arr = str.split('')
for (let i = 0; i < str.length; i++) {
if (!isNaN(parseInt(arr[i]))) {
arr.splice(i, 1, '[' + arr[i] + ']')
}
}
str = arr.join('')
console.log(str)
}
{
//随机生成100个100到900之前的随机不重复整数
let arr = []
let len = 100
let num = Math.round(Math.random()*900 + 100)
arr[0] = num
for (let i = 1; i < 100; i++) {
let num = Math.round(Math.random()*900 + 100)
let flag = 0
for (let j = i - 1; j >= 0; j--) {
if (num === arr[j]) {
flag = 1
}
}
if (flag === 1) {
i--
} else {
arr[i] = num
}
}
console.log(arr)
}
{
// 排序算法
// 1.sort排序
function compare (a, b) {//
return a - b
if (a > b) {
return 1
} else if (a < b) {
return -1
} else {
return 0
}
}
let arr = [5, 1, 2, 6, 3, 8]
console.log(arr.sort(compare))
// 冒泡排序
let arr = [42, 20, 17, 13, 28, 14, 23, 15]
function nin (s) {
var tmp = ''
for (let i = 0; i < s.length - 1; i++) {
for (let k = s.length - 1; k > i; k--) {
if (s[k] < s[k-1]) {
tmp = s[k]
s[k] = s[k-1]
s[k-1] = tmp
}console.log(s, 'bbb')
}console.log(s, 'aaaaa')
}
console.log(s)
}
nin(arr)
}
{
//(1)替换的参数data为字面量对象,用toString()不能将其转成字符串,此处用JSON.stringify()将其序列化为字符串,注意我们要的是json字符串里的内容,故不要忘了去除“外包装”{}后再存储成数组。
// (2)json字符串里的键值都带有”“,我们要的是”“里的内容,故还要去”“操作,但数字值有一般不带”“,所以还要筛选出不是数字的值再操作,此处的易错点在于从一串包含数字的字符串中找出数字来是不能直接typeof parseInt(s)的,原因是parseInt()后非数字字符返回NaN,数字字符则返回数字本身,而typeof NaN和typeof 数字,得到的都是number,也不能用是否等于NaN来判断,因为NaN和数字都不等于NaN,所以此处要用isNaN()来分辨出NaN和数字,即非数字字符和数字。
// (3)去除字符串的“外包装”常用slice()或substring()
// (4)对字符串的某一部分操作可直接用正则表达式处理,也可以用split()将其转换成数组,再用splice()操作,最后用join()恢复成字符串。
var desc = '我是{name},我今年{age}岁,我在{city}市';
var data1 = {name: "张三", age: 25, city: "北京"};
var data2 = {name: "李四", age: 29, city: "上海"};
console.log(desc, data1, data2)
function result (dpl, data) {
var a = b = c = []
var res = []
a = dpl.split(',')
console.log(a)
console.log(JSON.stringify(data))
b = JSON.stringify(data).slice(1, this.length - 1).split(',')
console.log(b)
let b_len = b.length
for (let i = 0; i < b.length; i++) {
res[i] = b[i].split(':')[1]
//console.log(res[i], 'dddddd')
if (isNaN(parseInt(res[i]))) {
res[i] = res[i].slice(1, this.length - 1)
}
//方法一
c = a[i].split('')
let start = a[i].indexOf('{')
let end = a[i].indexOf('}')
c.splice(start, end - start + 1, res[i])
a[i] = c.join('')
//方法二
//var reg = /\{.*\}/
//a[i] = a[i].replace(reg.res[i])
}
console.log(res, 'res')
console.log(a.join(','), 'a')
return a.join(',')
}
result(desc, data1)
}
阅读全文
1 0
- 前端数据类型总结
- JS前端基础-数据类型
- 前端总结
- 前端总结
- 前端总结
- 数据类型总结
- MySQL数据类型--常用数据类型总结
- 好资讯前端总结
- 前端优化总结
- 前端优化总结
- 前端优化总结
- 前端创作的总结
- 前端优化总结
- 前端小知识点总结
- web前端开发总结
- 前端优化总结
- 前端优化总结
- 前端常用总结
- 史上最全最强SpringMVC详细示例实战教程
- windows下线程同步
- JAVA静态代理和动态代理
- Android沉浸式状态栏
- 【备忘】Java菜鸟到大牛学习路线之高级篇
- 前端数据类型总结
- CCF CSP 201612-3 权限查询(Java-100分)
- 【effetive C++ 笔记 】条款23:宁以non-member, non-friend替换member函数
- 自动化测试(selenium)
- 求MAX最大值
- 开放本地IIS特定端口
- JUnit单元测试入门分享
- Nginx Linux 安装 教程 就是这么简单 基于1.12X
- hdu 2256 公式推导,小数取模问题