最简单的区别就是:
1、对象是Key-value的集合。
key必须有,key可以是数字,字符串;value可以是任何类型。访问方式为obj.key 或者 obj[key],遇到数字的key使用obj[key]。
例如
var products = {
162: {aa: '1', bb: 3},
164: {aa: '1', bb: 3},
};
如果没有key就会报错,错误例子
var products = {
{aa: '1', bb: 3},
{aa: '1', bb: 3},
};
操作对象的元素:
增:obj.name = 'rao'
删:delete obj.name
改:obj.name = 'xiao'
查:obj.name
2、数组是Value的集合。
value可以是任何类型。
数组中的每个元素不能有key,但是会有数字下标,下标和key是不同的概念,下标默认是从0开始的,注意只能是数字的,并且数组的length属性返回的是最大的下标加1,
如果你没有人为设置下标,那么length属性就是数组的元素个数,反之则不是,所以length并不一定是实际的元素个数。
数组元素为对象
var products = [
{aa: '1', bb: 3},
{aa: '1', bb: 3}
]
数组元素为数组
var products = [
[1, 2, 'c'],
[1, 2, 'c'],
];
数组元素为简单类型
var products = [
1, 2, 3, 4, 'abc'
];
关于下标的问题
错误的写法,因为数组不能设置key。
var products = [
123:{aa: '1', bb: 3},
222: {aa: '1', bb: 3}
]
正确的写法
var products = [];
products[123] = {aa: '1', bb: 3};
products[222] = {aa: '1', bb: 3};
操作数组的元素:
增:obj[index] = 'rao' 或者 obj.push('rao')
删:
1、delete obj[index]
2、item = obj.pop() 移除末尾
item = obj.shift() 移除头部
3、item = obj.splice(index, num) 已知index,删除当前index以及其后的总共num个元素。
item = obj.splice($.inArray('rao', obj), num) 未知的index,但是知道value。
4、通过设置length属性删掉index大于length的元素,注意length的意义是max index 加 1 ,而不是实际元素个数。
obj.length = 2;
5、遍历
6、filter
colors = obj.filter(function(item) {
return item != "red"
});
改:obj[index] = 'xiao'
查:obj[index]
数组的遍历
var arr = [1, 2, 3];
arr.forEach(function (element, index, array) {
console.log(element, index, array)
})
//output
1 0 [1, 2, 3]
2 1 [1, 2, 3]
3 2 [1, 2, 3]
转换:
str = arr.join(',')
arr = str.split(',')
使用提示:
对象
,顾名思义就是用来表示一个对象包含的属性值,特性的,所以试图获取对象的长度是没有意义的,当然你可以获取属性的个数 Object.getOwnPropertyNames(a).length。
数组
,用来表示一个列表,而每一行可以作为一个对象。
在前后端交互中,后端输出的一般是对象,然后里面可以是数组与对象的混合搭配,比如
{
"code":0,
"msg":"",
"data":[
{"id":11682,"userid":2632151,"name":"xxxx"},
{"id":11682,"userid":2632151,"name":"xxxx"},
{"id":11682,"userid":2632151,"name":"xxxx"},
]
}
获取数组和对象的实际元素个数 https:///raoxiaoya/article/details/107375084
理清了数组和对象的区别,下面来看看如何将它们转成json串
使用 JSON.stringify 方法来实现。
下面列举四个例子
var products = {
162: {aa: '1', bb: 3},
164: {aa: '1', bb: 3},
};
console.log(JSON.stringify(products));
// {"162":{"aa":"1","bb":3},"164":{"aa":"1","bb":3}}
var products = {
162: ['1', 3],
164: ['1', 3],
};
console.log(JSON.stringify(products));
// {"162":["1",3],"164":["1",3]}
var products = [
['1', 3],
['1', 3],
]
console.log(JSON.stringify(products));
// [["1",3],["1",3]]
var products = [
{aa: '1', bb: 3},
{aa: '1', bb: 3},
]
console.log(JSON.stringify(products));
// [{"aa":"1","bb":3},{"aa":"1","bb":3}]
这四种格式都是合法的json串,都可以进行json_decode。
因篇幅问题不能全部显示,请点此查看更多更全内容