迭代json结构,然后使用splice删除特定元素

问题描述 投票:-2回答:1
  • 我是js的新手。
  • 我试图从json中删除一个元素,以便我不显示它。
  • 我尝试了使用拼接方法的各种方法。
  • 但我无法解决它。
  • 你能告诉我如何解决它吗?
  • 在下面提供我的代码和json。
  • 我在if条件下保持了突破点。
  • 当我在控制台中输入sportsScores时,我完全看到300个元素
  • 因为它进一步分为三个阵列。
  • 每个数组由100个元素组成。
  • 因为每个元素都具有以下结构 playerID:301 playerName:“管理”playerNameFilterRowId:“管理”playerType:“ball”playerTypeOrder:1 ballID:28 ballName:“Admin”ballNameFilterRowId:“Admin”permissionLevelTypeID:1 permissions:null proto:Object
  • 在这个我应该删除这个元素,这是第118个元素sportsScores [118] .playerName
  • 我写了条件删除第118个元素,但我仍然无法删除。

if(sportsScores [i] .playerName ===“jump Data(here)”){

  • 提供下面的代码段
let sportsScores = values.data;
for (let i = 0; i < sportsScores.length; i++) {
    //console.log(sportsScores[i].ballName + "<---sportsScores[i].ballName--->" + sportsScores[i].playerName);
    if(sportsScores[i].playerName === "jump Data (here)") {
        console.log("sportsScores[i].playerName.splice(i, 1);--->");
        //sportsScores[i].playerName.splice(i, 1);
        //sportsScores.splice(sportsScores[i].playerName,1)
        //sportsScores.splice(sportsScores[i].playerName);
        sportsScores.splice(sportsScores[118]);
        //console.log("sportsScores.splice(sportsScores[118]);--->" , sportsScores.splice(sportsScores[118]));
        //console.log("sportsScores[i].playerName.splice(i, 1);--->" , sportsScores.splice(sportsScores[i].playerName,1));
        //console.log("sportsScores[i].playerName.splice(i, 1);--->" , sportsScores.splice(sportsScores[i].playerName));
        //console.log("sportsScores[i].playerName.delete(i, 1);--->" , sportsScores.delete(sportsScores[i].playerName,1));
    }

    sportsScores[i]["ballNameFilterRowId"] = sportsScores[i].ballName;
    sportsScores[i]["playerNameFilterRowId"] = sportsScores[i].playerName;
    sportsScores[i]["playerTypeFilterRowId"] = sportsScores[i].playerType;

}
this.gridkendo.reloadDataSource(values.data);


**JSON structure**

(312) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, …]
[0 … 99]
[100 … 199]
[200 … 299]
[300 … 311]


0
:
{playerID: 301, playerName: "Administration", playerType: "ball", playerTypeOrder: 1, ballID: 28, …}
1
:
{playerID: 302, playerName: "Special Events", playerType: "Node", playerTypeOrder: 2, ballID: 28, …}
2
:
{playerID: 304, playerName: "Off the Clock Settings", playerType: "Node", playerTypeOrder: 2, ballID: 28, …}



0:
playerID : 301
playerName : "Administration"
playerNameFilterRowId : "Administration"
playerType : "ball"
playerTypeOrder : 1
ballID : 28
ballName : "Admin"
ballNameFilterRowId : "Admin"
permissionLevelTypeID : 1
permissions : null
__proto__ : Object
javascript jquery json angular kendo-ui
1个回答
0
投票

你正在以不同的方式做到这一点,删除元素的最好方法是找到索引,然后将其拼接1.试试这个

Var index = sportsScores.indexOf(function(obj){return obj.playerName ==“your condition”});

通过此,您将能够获取索引以删除项目,而无需循环。

要删除项目只需拼接它。

sportsScore.splice(指数,1);

这里的最后一个参数1是要从索引中删除的元素。

© www.soinside.com 2019 - 2024. All rights reserved.