如何通过传递ID从JSON中删除项目 [英] How to remove item from JSON by passing IDs

查看:230
本文介绍了如何通过传递ID从JSON中删除项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下JSON

[  
   {  
      "Id":1068,
      "Name":"jone",
      "SortOrder":0
   },
   {  
      "Id":1077,
      "Name":"John ",
      "SortOrder":0
   },
   {  
      "Id":1074,
      "Name":"sasasa",
      "SortOrder":0
   },
   {  
      "Id":1078,
      "Name":"fdfdfd",
      "SortOrder":0
   },
   {  
      "Id":1029,
      "Name":"fdfdfd",
      "SortOrder":0
   },
   {  
      "Id":1076,
      "Name":"sdf",
      "SortOrder":0
   },
   {  
      "Id":1030,
      "Name":"erer",
      "SortOrder":0
   },
   {  
      "Id":11,
      "Name":"tryryr",
      "SortOrder":0
   },
   {  
      "Id":1008,
      "Name":"bvbf",
      "SortOrder":0
   },
   {  
      "Id":9,
      "Name":"jkk",
      "SortOrder":0
   },
   {  
      "Id":19,
      "Name":"pioku",
      "SortOrder":0
   },
   {  
      "Id":5,
      "Name":"cssxs",
      "SortOrder":0
   },
   {  
      "Id":1009,
      "Name":"mhmh",
      "SortOrder":0
   }
]

现在,我需要通过传递ID从JSON中删除商品.例如,当我将1068,1077 ids(逗号分隔)传递给函数时,我需要从JSON中删除相关数据.

Now I need to remove the Item from JSON by passing IDs. AS an example when I pass 1068,1077 ids(comma seperated) to the function I need to remove related data from the JSON.

[ { "Id":1074, "Name":"sasasa", "SortOrder":0 }, { "Id":1078, "Name":"fdfdfd", "SortOrder":0 }, { "Id":1029, "Name":"fdfdfd", "SortOrder":0 }, { "Id":1076, "Name":"sdf", "SortOrder":0 }, { "Id":1030, "Name":"erer", "SortOrder":0 }, { "Id":11, "Name":"tryryr", "SortOrder":0 }, { "Id":1008, "Name":"bvbf", "SortOrder":0 }, { "Id":9, "Name":"jkk", "SortOrder":0 }, { "Id":19, "Name":"pioku", "SortOrder":0 }, { "Id":5, "Name":"cssxs", "SortOrder":0 }, { "Id":1009, "Name":"mhmh", "SortOrder":0 } ]

当将1009,1068,1074,1078,1029,1076,1030,11,1008传递给JSON后面的函数时,将得到结果.

When as Pass 1009,1068,1074,1078,1029,1076,1030,11,1008 to the function following JSON sholud be the result.

[  
   {  
      "Id":9,
      "Name":"jkk",
      "SortOrder":0
   },
   {  
      "Id":19,
      "Name":"pioku",
      "SortOrder":0
   },
   {  
      "Id":5,
      "Name":"cssxs",
      "SortOrder":0
   },
   {  
      "Id":1009,
      "Name":"mhmh",
      "SortOrder":0
   }
]

什么是最有效的方法?并请注意.我无法使用ES6或ES5,因为某些ES5,ES6功能无法在IE和Safari浏览器中使用.

What is the most efficient way to do this? And please be noted. I cannot use ES6 or ES5, because, some of the ES5,ES6 functions not working in the IE and Safari browsers.

推荐答案

这可以解决问题.可以使用.map.filter之类的Array方法使它变得不那么冗长.

This does the trick. Could be made less verbose with an Array method like .map or .filter.

var myFilter = [1009,1068,1074,1078,1029,1076,1030,11,1008];
var myData = [
  { "Id":1074, "Name":"sasasa", "SortOrder":0 },
  { "Id":9, "Name":"jkk", "SortOrder":0 },
  { "Id":19, "Name":"pioku", "SortOrder":0 },
  { "Id":5, "Name":"cssxs", "SortOrder":0 },
  { "Id":1009, "Name":"mhmh", "SortOrder":0 }
];
function filterOut(data, filter){
  result = [];
  for (let i = 0; i < data.length; i++){
    if(filter.indexOf(parseInt(data[i].Id)) == -1){
      result.push(data[i]);
    }
  }
  return(result);
}

var output = filterOut(myData, myFilter);
console.log(output);

(请注意,您期望的结果不正确,因为它包含1009,这是您要求过滤掉的ID值之一.为简便起见,我从列表中删除了一些数据对象.)

(Note that your expected result was incorrect as it contains 1009, which is one of the Id values you asked to filter out. I removed some of the data objects from your list for brevity.)

我刚刚注意到您的没有现代JS"要求.我想我已经从ES5开始删除了所有内容.

I just noticed your 'no modern JS' requirement. I think I've removed anything from ES5 onward.

这篇关于如何通过传递ID从JSON中删除项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆