学习笔记---基础数据类型等知识,判断数据类型,数组去重等数据操作

博客介绍了JavaScript的转义运算符、字符串方法,重点阐述了数据类型,包括5大类型(number、boolean、function、object、string)、三种对象类型(Object、Date、Array)以及2种无值类型(null、undefined),还提醒了NaN、数组、日期等特殊数据类型的判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转义运算符:

var x = 'It\'s alright';
var y = "He is called \"Johnny\"";

var x = "John";
var y = new String("John");
typeof x // 返回 String
typeof y // 返回 Object

字符串方法:

var a = 'a你好,世界,hello world!';
var b = 'bbbb';
var c = '就好嘿嘿或'
a.charAt(3)       //返回指定索引值的字符                  // ","
a.charCodeAt(0)   //返回指定索引值所在字符的Unicode值      // 97
a.concat(b)      //连接两个或多个字符串,返回连接后的字符串  //"a你好,世界,hello world!bbbb"
a.concat(b,c)                                         // "a你好,世界,hello world!bbbb就好嘿嘿或"
String.fromCharCode(65) //将 Unicode 转换为字符串       //'A'
a.slice(2,5)   //"好,世"

var mystring="Hello world!";
mystring.substring(2,4);     //输出“ll”
mystring.substr(2,4);        //输出“llo”
break 语句用于跳出循环。
continue 用于跳过循环中的一个迭代。
for (i=0;i<10;i++)
{
    if (i==3) break;
    x=x + "The number is " + i + "<br>";
}
//输出了 i=3以前

for (i=0;i<=10;i++)
{
    if (i==3) continue;
    x=x + "The number is " + i + "<br>";
}
//除了i=3没输出,其他的都输出了
typeof undefined             // undefined
typeof null                  // object
null === undefined           // false
null == undefined            // true
null和undefined值相同,但是数据类型不同

数据类型:5大类型:number,boolean,function,object,string
三种对象类型:Object,Date ,Array
2种不包含任何值的数据类型:null undefined

typeof NaN                    // 返回 number
typeof false                  // 返回 boolean
typeof [1,2,3,4]              // 返回 object
typeof {name:'John', age:34}  // 返回 object
typeof new Date()             // 返回 object
typeof function () {}         // 返回 function

请注意:

NaN 的数据类型是 number
数组(Array)的数据类型是 object
日期(Date)的数据类型为 object
null 的数据类型是 object
未定义变量的数据类型为 undefined

"John".constructor                 // 返回函数 String()  { [native code] }
(3.14).constructor                 // 返回函数 Number()  { [native code] }
false.constructor                  // 返回函数 Boolean() { [native code] }
[1,2,3,4].constructor              // 返回函数 Array()   { [native code] }
{name:'John', age:34}.constructor  // 返回函数 Object()  { [native code] }
new Date().constructor             // 返回函数 Date()    { [native code] }
function () {}.constructor         // 返回函数 Function(){ [native code] }

判断是否为数组类型:

function isArray(myArray) {
    return myArray.constructor.toString().indexOf("Array") > -1;
}
返回布尔类型 

toFixed()	把数字转换为字符串,结果的小数点后有指定位数的数字。
Number("3.14")    // 返回 3.14
Number(" ")       // 返回 0 
Number("")        // 返回 0
Number("99 88")   // 返回 NaN

5 + null    // 返回 5         null 转换为 0
"5" + null  // 返回"5null"   null 转换为 "null"
"5" + 1     // 返回 "51"      1 转换为 "1"  
"5" - 1     // 返回 4         "5" 转换为 5
有一个耐人寻味的现象就是如果
 1 == true / 0==false  // 结果都为true
 2 == true // 非1的数字跟true比较得布尔值 false
所以会有 1 < 2 < 3 //true 3> 2>1 //false
但是如果在if(条件){}
条件中,如果是非0的话,都会走if中语句 if(2){console.log(true)} //true 
Boolean('0') //true
Boolean(0) //false
我们可以使用typeof来获取一个变量是否存在,如if(typeof a!="undefined"){},而不要去使用if(a)因为如果a不存在(未声明)则会出错
正因为typeof遇到null,数组,对象时都会返回object类型,所以当我们要判断一个对象是否是数组时

或者判断某个变量是否是某个对象的实例则要选择使用另一个关键语法instanceof

instanceof用于判断一个变量是否某个对象的实例,如var a=new Array();alert(a instanceof Array);会返回true,

同时alert(a instanceof Object)也会返回true;这是因为Array是object的子类。

再如:function test(){};var a=new test();alert(a instanceof test)会返回true。
//去除重复数组对象
其中 registerId为数组对象中 某一数据的唯一标识
      function uniqueArr(arr){
      //1.
        var obj = {};
        arr = arr.reduce(function(item, next) {
           obj[next.registerId] ? '' : obj[next.registerId] = true && item.push(next);
           return item;
        }, []);
        return arr;
      //  2.
        var allArr = [];//新数组
        $.each(oldArr,function(i,v){
          var flag = true;
          if(allArr.length > 0){
              $.each(allArr,function(n,m){
                  if(allArr[n].registerId == oldArr[i].registerId){flag = false;};
              });
          };
          if(flag){
              allArr.push(oldArr[i]);
          };
        });
        console.log(allArr)
      }
// 3.
ES6新语法,支持扩展符和set
function distinct(a, b) {
    return Array.from(new Set([...a, ...b]))
}
这个方法耗时最少
// 4.还有一种方法(在网上看到的,耗时也很少,对性能也很好) 首先创建一个空对象,然后用 for 循环遍历
利用对象的属性不会重复这一特性,校验数组元素是否重复
function distinct(a, b) {
    let arr = a.concat(b)
    let result = []
    let obj = {}

    for (let i of arr) {
        if (!obj[i]) {
            result.push(i)
            obj[i] = 1
        }
    }

    return result
}

// 往列表中插入一部分数据 防止操作这行数据 不能用直接用 new Array(10). fill(item)
let item = {
            name: '王小虎',
            department: '网络安全部'
        }
        this.tableList = new Array(10).fill(JSON.stringify({
            name: '王小虎',
            department: '网络安全部'
        }))
        this.tableList = this.tableList.map( item => JSON.parse(item))


let item = {
                    name: '王小虎',
                    department: '网络安全部'
                }
                this.tableList = Array.apply(null, { length: 3 }).map(() => ({
                    name: '王小虎',
                    department: '网络安全部'
                }));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值