不好意思做不到!js 是弱类型语言,我们不能真正的做到指定元素类型,但是可以先指定元素长度,然后再循环赋值哈哈哈~
产品上出现了一个奇怪的问题,一个 H5 页面在测试环境下(hostName 为 xxx-test.xxx.com)完全没有任何问题,Cookie
可以取到所有信息,但是发布到线上后,发现了一个十分捉鸡的问题,线上环境(xxx.xxx.com)居然取不到 Cookie
中的 xxx_ticket
信息!!!
刚开始吭哧吭哧的整了一波后,始终在怀疑是自己写的逻辑有问题,查来查去,还是没啥头绪,没办法只能去请教下前辈。一波操作后,发现了如下情况:
原因就在这个 HttpOnly
上,关于 HttpOnly
的解释如下:
HttpOnly: HttpOnly is an additional flag included in a Set-Cookie HTTP response header. Using the HttpOnly flag when generating a cookie helps mitigate the risk of client side script accessing the protected cookie (if the browser supports it).
换句话说,客户端/浏览器是无法对 Cookie
中的这个 key
进行操作的,并且不可见。
不可使用 +=
,而是 concat
。
可用使用 ...
对一维数组下另外塞入的完整一维数组进行进行展开,防止变为二维数组。
ES6 扩展运算符...可以将两重数组转换为单层数组:
[].concat(...[1, [2, 3, [4]], "a", "b", ["c", "d"], [["d"],"e"], "f"]); // [1, 2, 3, Array(1), "a", "b", "c", "d", Array(1), "e", "f"]
// 利用 some 方法,我们可以实现多重转换为单层:
function flatten(origin) { while(origin.some(item=> Array.isArray(item))) {
origin = [].concat(...origin);
} return origin;
}
var arr = [1, [2, 3, [4]], "a", "b", ["c", "d"], [["d"],"e"], "f"];
console.log(flatten(arr)) // [1, 2, 3, 4, "a", "b", "c", "d", "d", "e", "f"]