不同数据类型的操作方法

数据类型

JavaScript一共有8种数据类型,其中有7种基本数据类型:Undefined、Null、Boolean、Number、String、Symbol(es6新增,表示独一无二的值)和BigInt(es10新增)。

1种引用数据类型——Object(Object本质上是由一组无序的名值对组成的)。里面包含 function、Array、Date等。JavaScript不支持任何创建自定义类型的机制,而所有值最终都将是上述 8 种数据类型之一。

原始数据类型:直接存储在栈(stack)中,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储。

引用数据类型:同时存储在栈(stack)和堆(heap)中,占据空间大、大小不固定。引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。

判断类型

  • typeof 于原始类型来说,除了 null (object)都可以显示正确的类型。
  • instanceof 判断对象的类型 (原理: 内部机制是通过判断对象的原型链中是不是能找到类型的 prototype)。
  • constructor
console.log((2).constructor === Number); // true
console.log((true).constructor === Boolean); // true
console.log(('str').constructor === String); // true
console.log(([]).constructor === Array); // true
console.log((function() {}).constructor === Function); // true
console.log(({}).constructor === Object); // true
注意!如果我创建一个对象,更改它的原型,constructor随之变化
function Fn(){};

Fn.prototype=new Array();

var f=new Fn();

console.log(f.constructor===Fn);    // false
console.log(f.constructor===Array); // true 

字符串

es6: 字符串对象就新增了 .includes() 和 .repeat() 方法。

.includes()

替代以往判断内容 > -1 的方式

const string = 'food';
const substring = 'foo';

console.log(string.includes(substring)); // true
console.log(string.indexOf(substring) > -1);  

substring()

用于提取字符串中介于两个指定下标之间的字符

stringObject.substring(start,stop)

// start 必填, stop: 选填


var str="Hello world!"
document.write(str.substring(3))   // lo world!

.repeat()

实现重复字符

'meow'.repeat(3); // 'meowmeowmeow'

match()

方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

语法
stringObject.match(searchvalue)
stringObject.match(regexp)

match() 方法将检索字符串 stringObject,以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。

如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。除了这些常规的数组元素之外,返回的数组还含有两个对象属性。index 属性声明的是匹配文本的起始字符在 stringObject 中的位置,input 属性声明的是对 stringObject 的引用。

如果 regexp 具有标志 g,则 match() 方法将执行全局检索,找到 stringObject 中的所有匹配子字符串。若没有找到任何匹配的子串,则返回 null。如果找到了一个或多个匹配子串,则返回一个数组。不过全局匹配返回的数组的内容与前者大不相同,它的数组元素中存放的是 stringObject 中所有的匹配子串,而且也没有 index 属性或 input 属性。

示例:
var str="Hello world!"
document.write(str.match("world") + "<br />")
document.write(str.match("World1") + "<br />")

// world
// null 

var str="1 plus 2 equal 3"
document.write(str.match(/\d+/g))

// 1,2,3

substr()

方法可在字符串中抽取从 start 下标开始的指定数目的字符。
stringObject.substr(start,length)

length 可选

var str="Hello world!"
document.write(str.substr(3) 

// lo world!

document.write(str.substr(3,7)) 7:子串中的字符数。
//lo worl

eval()

可计算某个字符串,并执行其中的的 JavaScript 代码。

eval("x=10;y=20;document.write(x*y)")

document.write(eval("2+2"))

var x=10
document.write(eval(x+17))

200
4
27

trim()

去除字符串的头尾空格
不会改变原始字符串

toString()

方法可把一个逻辑值转换为字符串,并返回结果。


object

Object.keys()

定义:
ES5 引入了Object.keys方法,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键名。

  • 传入对象,返回属性名
var data={a:1,b:2,c:9,d:4,e:5};
    console.log(Object.keys(data));//["a", "b", "c", "d", "e"]
    Object.keys(data).map((key,item)=>{
        console.log(key,data[key]);//key=>属性名    data[key]=>属性值
});
  • 传入字符串,返回索引
var str = 'ab1234';
console.log(Object.keys(obj));  //[0,1,2,3,4,5]
  • 传入数组 返回索引
var arr = ["a", "b", "c"];
    console.log(Object.keys(arr)); // console: ["0", "1", "2"]****
  • 构造函数 返回空数组或者属性名
function Pasta(name, age, gender) {
      this.name = name;
      this.age = age;
      this.gender = gender;
      this.toString = function () {
            return (this.name + ", " + this.age + ", " + this.gender);
    }
}

console.log(Object.keys(Pasta)); //console: []

var spaghetti = new Pasta("Tom", 20, "male");
console.log(Object.keys(spaghetti)); //console: ["name", "age", "gender", "toString"]

Object.values()

Object.values方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键值。

Object.entries()

Object.entries方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键值对数组。


json

JSON.stringify()

JSON 的常规用途是同 web 服务器进行数据交换。

在向 web 服务器发送数据时,数据必须是字符串。

通过 JSON.stringify() 把 JavaScript 对象转换为字符串

JSON.parse()

JSON.parse() 方法用于将一个 JSON 字符串转换为对象


Number

toFixed()

方法可把 Number 四舍五入为指定小数位数的数字

var num = new Number(13.37);
num.toFixed(1) 一位小数 13.4

Number.isInteger()

方法用来判断给定的参数是否为整数。

floor()

方法返回小于等于x的最大整数


Date

toUTCString() 方法

可根据世界时 (UTC) 把 Date 对象转换为字符串,并返回结果

var d = new Date()
document.write (d.toUTCString())

// Tue, 19 May 2020 09:06:44 GMT
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。