gpt4 book ai didi

Javascript 使用相同的键迭代数组/对象的内部值

转载 作者:太空宇宙 更新时间:2023-11-04 00:33:47 33 4
gpt4 key购买 nike

我正在构建一个nodejs应用程序,它有很多不同时区的客户端。我将所有数据保存在Unix时间戳中,当客户端登录时,我使用客户端时区添加或减去数据库中存储的unix时间戳,以便它与客户端时间匹配。

用户数据(文档/对象)也具有数组和其他对象的键,

{
name: "data",
location": "us",
activity: [],
time: 1476301165252,
subdoc: [{
time: 1476301165252,
someotherKeys: ....
}]

}

我如何循环浏览此文档并编辑所有“时间”键(也包括内部对象和数组)并对所有“时间”键分别添加或减去一个数字。

数量将是统一的。意味着所有“时间”键都将使用相同的数字进行迭代。

最佳答案

我认为,您需要使用递归 for...in 循环来解决这个问题。

类似这样的事情:

function changeTime (inputObj, newTimeVal) {
var key;
for (key in inputObj) {
if (key === "time") {
inputObj[key] = newTimeVal;
}
if (typeof inputObj[key] === 'object') {
changeTime(inputObj[key], newTimeVal);
}
}
}

可能不完全正确,但它应该让您走上正确的道路。

编辑:如果您只想在原始值中添加或减去,则使用相同的模式很容易:

function changeTime (inputObj, delta) { // we'll always add here-- you can pass in a negative or positive number to account for add or subtract
var key;
for (key in inputObj) {
if (key === "time") {
inputObj[key] = inputObj[key] + delta;
}
if (typeof inputObj[key] === 'object') {
changeTime(inputObj[key], delta);
}
}
}

关于Javascript 使用相同的键迭代数组/对象的内部值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40007208/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com