【问题标题】:Remove first and last two record from json从json中删除第一条和最后两条记录
【发布时间】:2019-03-28 10:04:52
【问题描述】:
data:[
  { user: "2016-04-14", avg_: "13", new: "32511.20" },
  { user: "2016-04-21", avg_: "32", new: "32779.17" },
  { user: "2016-04-22", avg_: "32", new: "32898.40" },
  { user: "2016-04-23", avg_: "32", new: "32903.11" },
  { user: "2016-04-24", avg_: "32", new: "329" },
  { user: "2016-04-25", avg_: "3298", new: "32962.78" }
];

我试过了,它成功删除了最后两个元素

for (var i = 1; i <= 2; i++) {
    var s = data.splice(-1, i);
    console.log(s);
}

现在,我不想重复这个逻辑来删除前两个任何想法?

【问题讨论】:

  • input.splice(-2, 2); input.splice(0, 2);?
  • 如果需要保存拼接的项目,var firstTwo = data.splice(0,2), lastTwo = data.splice(-2, 2);无需循环
  • 啊,很好,我得到了答案,感谢您的回复:) @Bravo

标签: javascript jquery arrays json object


【解决方案1】:

您可以只使用slice 简单地获取前两个和最后一个元素而无需循环

const data = [
        {user: "2016-04-14", avg_: "13", new: "32511.20"},
        {user: "2016-04-21", avg_: "32", new: "32779.17"},
        {user: "2016-04-22", avg_: "32", new: "32898.40"},
        {user: "2016-04-23", avg_: "32", new: "32903.11"},
        {user: "2016-04-24", avg_: "32", new: "329"},
        {user: "2016-04-25", avg_: "3298", new: "32962.78"}
      ];
    
    const res = [...data.slice(0, 2), ...data.slice(-2)]
console.log(res);

或者如果你想删除第一个和最后两个并保留其余的,你可以这样写

const data = [
        {user: "2016-04-14", avg_: "13", new: "32511.20"},
        {user: "2016-04-21", avg_: "32", new: "32779.17"},
        {user: "2016-04-22", avg_: "32", new: "32898.40"},
        {user: "2016-04-23", avg_: "32", new: "32903.11"},
        {user: "2016-04-24", avg_: "32", new: "329"},
        {user: "2016-04-25", avg_: "3298", new: "32962.78"}
      ];
    
    const res = data.slice(2, -2)
console.log(res);

【讨论】:

  • 你的意思是splice - OP肯定会要求删除前2个和最后2个
  • @Bravo 从他的示例中的样子来看,他打印了删除的元素,因此我建议切片
  • @Bravo,我在回答中也添加了另一部分
  • 不,您的代码仍然无法更改 data - 没有从 data 中删除任何内容 - 也许您想复制 cmets 中的代码?
  • @Bravo,在大多数情况下改变数据不是一个正确的想法,最好以不可变的方式执行此操作,从而克隆并返回您需要的内容
【解决方案2】:

非常简单的方法 - 只需调用这些函数:

arr.pop():
arr.pop();
arr.shift();
arr.shift();

并且前两个和最后两个元素将被删除。

【讨论】:

  • 所以arr.pop();arr.pop();arr.shift();arr.shift();
  • 没错@Bravo
  • 我不明白,你的答案是正确的,它会从数组中删除前两项和最后两项,就像问题中提出的那样。我是新来的,这个问题/答案让我对这个地方的运作方式感到困惑。显然你应该告诉 OP 他们不想做他们明确表示他们想做的事情 - 对吗?
  • @Bravo 你告诉 OP 他们代码中的问题,以及他们想要做的固定代码/代码行。
  • 他们似乎已经接受了答案——正如我所说,只是想了解这个地方
猜你喜欢
  • 1970-01-01
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2019-12-28
相关资源
最近更新 更多