javascript中的对象与数组的区别以及转换成json字符串

最简单的区别就是:
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')
删:
	1delete 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://blog.csdn.net/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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值