关于json 数组 对象 类数组对象 去重 对象属性名不重复

定义

JSON是一种数据格式(对象和数组互相嵌套)
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。

在 JS 语言中,一切都是对象 。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。

对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, ...} 的键值对结构。在面向对象的语言中,key 为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。

数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 ["java", "javascript", "vb", ...] 的索引结构。在 JS 中,数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,值的类型可以是任意类型。

数组 对象 类数组对象

https://www.cnblogs.com/xjser/p/4962821.html

索引 元素值
拥有length属性
元素值可以是任何数据类型

对象 key value

js中对象类型为一组无序的由键->值组成的数据集合,其元素的键名和值都可以自定义
元素值可以是任何数据类型
对象自身所拥有的(不包括继承来的)任何属性都是有用户自定义的

类数组模型 不是数组 不能用数组的方法

可以把数组的索引值看成的元素的键名,元素看成是值,可以给显式的给对象定义length属性,使用对象来模拟数组

定义: 类数组对象:只包含使用从零开始,且自然递增的整数做键名,并且定义了length表示元素个数的对象,我们就认为他是类数组对象!

特例 :利用对象属性名不能重复的特点,实现数组去重

此时需要将数组的元素值赋到空对象obj中,判断不存在 写入(不输出 算多余?),存在则运用数组方法splice 裁剪 并j-- 后置是因为先裁剪该位置 然后后面的数据填充该位置索引 故裁剪操作发生,需要重新判断、

<script>
     function distinct(arr) {
                //空对象
                var obj = {};
               for(var i = 0; i < arr.length; i++) {
                         if(obj[arr[i]] === undefined) {
                                     obj[arr[i]] = 1;//随便贴一个不为空的值 
                           }else{
                                    arr.splice(i--, 1);
                return arr;