繁体   English   中英

从 JSON 阵列中移除元素

[英]Removing Elements From JSON Array

我有一个 JSON 数组,如下所示:

{
    "Times": [
        {
            "TimeStamp": "1588516643",
            "PremiumTime": "1",
            "ID": "473873947895897",
            "GuildID": "27823978489723789"
        },
        {
            "TimeStamp": "1588516643",
            "PremiumTime": "1",
            "ID": "473873947895897",
            "GuildID": "27823978489723789"
        }
    ]
}

是否有一种简单的方法可以删除满足条件的所有元素,如果该元素中的时间戳小于或等于变量,我想将其删除。

我试过循环遍历数组,但是当我从中删除一些东西时,我必须再次启动循环,因为 object 发生了变化,这样做会给我带来错误。

您应该注意的另一种方法是向后循环。 您看到的问题可能是因为当您删除一个项目时,以后每个项目的索引都会更改。 数组的长度也减少了。

但请注意,数组中较早的项目不受影响。 所以从阵列的远端开始,然后回到起点。

而且我们不关心长度的变化,因为我们只在循环开始时检查一次长度,而不是每次迭代。

 let obj = { "Times": [{ "TimeStamp": "1588516642", }, { "TimeStamp": "1588516643", }, { "TimeStamp": "1588516644", }] } for (let i = obj.Times.length - 1; i > -1; i--) { if (obj.Times[i].TimeStamp <= 1588516643) { obj.Times.splice(i, 1); } } console.log(obj.Times);

这样做,

const obj = {
    "Times": [{
            "TimeStamp": "1588516642",
            "PremiumTime": "1",
            "ID": "473873947895897",
            "GuildID": "27823978489723789"
        },
        {
            "TimeStamp": "1588516643",
            "PremiumTime": "1",
            "ID": "473873947895897",
            "GuildID": "27823978489723789"
        }
    ]
}

const filterTimestamp = 1588516642;
const result = obj.Times.filter(element => element.TimeStamp > filterTimestamp);
console.log(result)

尝试在 JS 中使用过滤器

假设 x 是您的 JSON 数据并且 req_value 是您所需的时间戳值。

var req_value = '1588516641';
var y = x.Times.filter(function(item, index){
  return item.TimeStamp <= req_value;
})

console.log(y) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM