CNode

json.parse()得到的Json对象,可以直接添加数组对象吗?使用了push()方法却代替了原来的数组对象

问答
Cchaoxihailing发布于9 年前最后回复9 年前4 回复5171 浏览0 收藏

数据结构像下图 image.png

现在想在这个数据结构,在clients数组添加 {token: token, expiredTime: expireTime}这样的对象 image.png

程序执行后却替换了原有的token,而不是添加新的token

插入前,插入后 image.png

查看回复

回复 (4)

W
wjiban#1·9 年前

for of 遍历的是数组???

L
leiwei1991#2·9 年前

for 循环里逻辑有问题吧 假设data.clients 长度是10,token都不相等的话,岂不是push了10次。 token不相等就执行splice 和 push 只是为了把这个对象放到数组最后一位?

C
coolsnbo#3·9 年前

楼主的逻辑是想 token 如果有一样的,替换掉,没有一样的 添加到 clients 数组中吗?

试试这样: let data = [{ token: 1, expireTime: 1 }, { token: 2, expireTime: 2 }, { token: 3, expireTime: 3 }]; let one = { token: 5, expireTime: 5 };

let index = -1; for (let i = 0; i < data.length; i++) { if (data[i].token == one.token) { index = i; break; } }

if (index < 0) { data.push(one); } else { data[index] = one; }

console.log(data)

C
chaoxihailing#4·9 年前

@coolsnbo 嗯,我的逻辑是你说的那样的,谢谢啦

参与回复
登录后即可参与回复。登录