博客列表 >Javascrip 数组和对象及 json 的序列化

Javascrip 数组和对象及 json 的序列化

我是郭富城
我是郭富城原创
2020年05月21日 00:50:07592浏览

Javascrip 数组和对象及 json 的序列化

1.JavaScript 数据类型

  • 值类型(原始类型):字符串(String)、数字(Number)、布尔(Boolean)
  • 值类型(特殊类型):对空(Null)、未定义(Undefined)、Symbol
  • 引用数据类型:对象(Object)、数组(Array)、函数(Function)

1.1 javascript 数组

  • 创建数组,具体语法和 php 中创建数组一致
    var cars = ["BMW", "Volvo", "GEELY"];
    上面这个数组就是一个关于汽车品牌的数组,包括宝马,沃尔沃,吉利,他是一个索引数组
  • 访问数组元素
    cars[0],获取的就是 BMW 这个值,访问方法和 php 类似
  • 数组属性和方法
    JavaScript 数组的真实力量隐藏在数组的属性和方法中:
    cars.length;结果自然是 3,因为数组只有三个元素
  • 遍历数组元素
    方法一:for 循环
  1. <script>
  2. var cars, text, Length, i;
  3. cars = ["BMW", "Volvo", "GEELY"];
  4. Length = cars.length;
  5. text = "<ul>";
  6. for (i = 0; i < Length; i++) {
  7. text += "<li>" + cars[i] + "</li>";
  8. }
  9. text += "</ul>";
  10. </script>

方法二 forEach 遍历(运行结果是一样的)

  1. var cars, text;
  2. cars = ["BMW", "Volvo", "GEELY"];
  3. text = "<ul>";
  4. cars.forEach(myFunction);
  5. text += "</ul>";
  6. function myFunction(value) {
  7. text += "<li>" + value + "</li>";
  8. }
  • 如何识别数组
    ECMAScript 5 定义了新方法 Array.isArray():
    Array.isArray(cars); // 返回 true
  • 获取数组中的部分元素 slice
    cars.slice(起始索引,结束索引)
    例如cars.slice(0,2)//返回的是BMW和VOLVO

    不包括结束索引所对应的元素

  • 如何在数组中插入,替换,删除 splice
    插入
    splice(起始位置,长度,插入的内容);
    替换:
    splice(1,2,"沃尔沃","吉利");//已经被替换位中文了
    删除:
    splice(1,2);

1.2 javascript 对象

值以名称:值对的方式来书写(名称和值由冒号分隔)。

  1. var person = {
  2. firstName: "Nicola",
  3. lastName: "Guo",
  4. age: 50,
  5. eyeColor: "black",
  6. };
  • 访问对象属性,访问对象成员使用.点操作符
    方式一:objectName.propertyName
    方式二:objectName["propertyName"]
  • 如何遍历对象
    方法一:JavaScript for...in 循环
    语法:
  1. for (对象的键名 in 对象) {
  2. 要执行的代码;
  3. }
  1. var person = { a: "尼古拉", b: "小郭", c: 88888888 };
  2. for (key in person) {
  3. txt += person[key];
  4. }

方法二,把对象转为数组
第一步,获取键名数组
var keys = Object.keys(需要遍历的对象);
第二部,把新的键名组成的数组遍历出来

  1. keys.forEach(function (value, index, arr) {
  2. console.log(this[value]);
  3. }, 需要遍历的对象);

1.3 javascript 函数

  • JavaScript 函数是被设计为执行特定任务的代码块。
  • JavaScript 函数会在某代码调用它时被执行
  1. function myFunction(p1, p2) {
  2. return p1 * p2; // 该函数返回 p1 和 p2 的乘积
  3. }

2.JavaScript JSON

  • JSON 是存储和传输数据的格式。
  • JSON 经常在数据从服务器发送到网页时使用。

2.1 JSON 语法

JSON 支持三种数据类型: 简单值, 对象, 数组

简单值

  • 数值: 150, 3.24
  • 字符串: "Hello World!",必须使用双引号做为定界符
  • 布尔值: true, false
  • 空值: null

注意: 不支持undefined

2.2 对象

原生 JS 对象字面量

  1. js语法
  2. var person = {
  3. "name": "Nicola",
  4. "age": 18
  5. };
  6. // 以上内容用JSON对象表示
  7. {
  8. "name": "Nicola",
  9. "age": 18
  10. }
  11. // JSON属性值也支持复杂类型,如对象
  12. {
  13. "name": "尼古拉",
  14. "age": 18,
  15. "course": {
  16. "name": "JavaScript",
  17. "grade": 100
  18. }
  19. }
  1. 没有变量声明: JSON 中没有变量概念
  2. 没有分号: 因为 JSON 不是 JS 语句
  3. 属性名: 任何时候都必须添加双引号, 且必须是双引号

2.3 JSON 序列化

  • ES5 提供了内置全局对象JSON,对 JSON 数据提供了全面支持
  • JSON.stringify(): 将原生 JS 对象,序列化为 JSON 字符串,用于存储与传输
  1. <script>
  2. var person = {
  3. name: "Peter Zhu",
  4. age: 29,
  5. isMarried: true,
  6. course: {
  7. name: "JavaScript",
  8. grade: 99,
  9. },
  10. getName: function () {
  11. return this.name;
  12. },
  13. hobby: undefined,
  14. toString: function () {
  15. return "继承属性";
  16. },
  17. };
  18. var jsonStr = JSON.stringify(person);
  19. console.log(jsonStr);
  20. </script>

序列化后的结果为:

  1. {
  2. "name": "Peter Zhu",
  3. "age": 29,
  4. "isMarried": true,
  5. "course": {
  6. "name": "JavaScript",
  7. "grade": 99
  8. }
  9. }

序列化后,1.方法,2.值为 undefined 的成员,3.原型对象成员会消失

JSON.stringify()用法

  • JSON.stringify()括号内直接引入需要格式化的 js 对象即可
  • JSON.stringify(js对象,["需要格式的属性"]),只会序列化指定的属性
  • JSON.stringify(js对象,["函数"]),依据方法内的指定流程序列化相应的内容
  1. var jsonStr = JSON.stringify(person, function (key, value) {
  2. switch (key) {
  3. case "age":
  4. return "年龄是我的小秘密";
  5. case "isMarried":
  6. return undefined;
  7. // 必须要有default, 才可以输出其它未被处理的属性
  8. default:
  9. return value;
  10. }
  11. });

3. 总结

JavaScript 是一个完备的编程语言,用其他的语言能够做的事情用 Javascript 同样能够做到,甚至还能做得更多,因为我们就在 Web 页面进行编程!

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议