背景:
1.在javascript中创建动态数组,并动态赋值。
2.使用JSON.stringify转成json字符串操作。
结果:却是得到 [] 空的json字符串
/** 错误案例 */
var arr = [];//创建数组
var key_1 = '键名1';
var key_1_value = '键名1对应的值1';
var key_2 = '键名1';
var key_2_value = '键名1对应的值2';
arr[key_1] = key_1_value ;//将键名与键值关联赋值
arr[key_2] = key_2_value ;
console.log(arr);//打印数组
//console.log结果:['键名1':'键名1对应的值1','键名2':'键名2对应的值2']
//但打印结果中会有length: 0 和 [[Prototype]]: Array(0)
var json_str = JSON.stringify(arr);//将数组转成json字符串
console.log(json_str );//打印json字符串
//但此时,打印出来的json_str会为 [] 空的,这表明上面有哪一步是有问题的;
修改后,完整案例如下:
var arr = {};//创建为对象数组
var key_1 = '键名1';
var key_1_value = '键名1对应的值1';
var key_2 = '键名1';
var key_2_value = '键名1对应的值2';
arr[key_1] = key_1_value ;//将键名与键值关联赋值
arr[key_2] = key_2_value ;
console.log(arr);//打印数组
//结果:{键名1:'键名1对应的值1',键名2:'键名2对应的值2'}
//展开结果会有:[[Prototype]]: Object
var json_str = JSON.stringify(arr);//将数组对象转成json字符串
console.log(json_str );//打印json字符串
//结果为{"键名1":"键名1对应的值1","键名2":"键名2对应的值2"} ,正确结果
//使用存到cookie中进行测试
document.cookie = "test_cookie=" + json_str;
//获取所有cookie
let cookies = document.cookie;
console.log(cookies);
//获取指定名称的cookie值
function getJsonCookie(cookie_name)
{
let value = "";
let cookies = document.cookie.split("; ");
for (let i = 0; i < cookies.length; i++) //遍历cookie
{
let arr = cookies[i].split("=");
if (arr[0] === cookie_name) //当与cookie_name相等时,输出对应的值
{
value = arr[1];
}
}
return value;
}
console.log(getJsonCookie("test_cookie"));