从 JSON 数组拼接或删除元素列表,仅删除偶数项而不是匹配项

Posted

技术标签:

【中文标题】从 JSON 数组拼接或删除元素列表,仅删除偶数项而不是匹配项【英文标题】:Splice or Remove list of elements from JSON Array ,removing even numbered items only instead of matching items 【发布时间】:2017-05-01 19:49:29 【问题描述】:

我有一个这样的 REST API 的 JSON 数组输出,我正在使用 ng-repeat 在 html 上显示这些项目。

    var searchresponse = [
"items": [
    "employeeId": "ABC",
    "type": "D",
    "alive": "Yes"

, 
    "employeeId": "DEF",
    "type": "D",
    "alive": "Yes"

, 
    "employeeId": "NPK",
    "type": "D",
    "alive": "Yes"

, 
    "employeeId": "PKN",
    "type": "A",
    "alive": "Yes"
],
"more": false
];

当用户尝试使用 selectall/single select 删除时,我正在调用 REST API 以从 db 中删除员工 ID。一旦我得到一个成功的响应,我计划拼接/删除用户从视图中选择的值。我想从搜索响应中删除以下employeeid 及其类型,alive 已删除

    var data1=["ABC","NPK","PKN"];

我试过这样做

var data1=["ABC","NPK"];
var items=searchresponse[0].items;
for(i in items)
if(data1.indexOf(items[i].employeeId)!=-1)
    items.splice(i,1);


console.log(searchresponse[0].items);

真正发生的是,它只删除了偶数项,例如:它删除了 ABC,PKN 。 (它正在删除列表中的第 0、第 2、第 4 项。留下第 1、第 3 项等)。我在这里缺少什么

【问题讨论】:

它不会从列表中删除项目 可以通过$index获取对象的索引,然后从数组中拼接对象 我该怎么做axcl,请你指导我。我被这件事震惊了一天。 【参考方案1】:

问题是当你从数组中移除一项时,数组中其他项的索引向左移动。

假设您在数组中有 4 个项目 ([a, b, c, d]) 并且您正在删除第一个项目,因此 i=0 那么第二次迭代中的结果数组将是 [b,c,d]i 现在将是 i=1实际上,您在循环中错过了b

var searchresponse = [
  "items": [
    "employeeId": "ABC",
    "type": "D",
    "alive": "Yes"

  , 
    "employeeId": "DEF",
    "type": "D",
    "alive": "Yes"

  , 
    "employeeId": "NPK",
    "type": "D",
    "alive": "Yes"

  , 
    "employeeId": "PKN",
    "type": "A",
    "alive": "Yes"
  ],
  "more": false
];

var data1 = ["ABC", "NPK", "PKN"];

var data1 = ["ABC", "NPK"];
var items = searchresponse[0].items;
for (var i = items.length - 1; i >= 0; i--) 
  if (data1.indexOf(items[i].employeeId) != -1) 
    items.splice(i, 1);
  

console.log(searchresponse[0].items);

【讨论】:

哇!!非常感谢约翰尼。它就像一个魅力!也感谢您的解释:)

以上是关于从 JSON 数组拼接或删除元素列表,仅删除偶数项而不是匹配项的主要内容,如果未能解决你的问题,请参考以下文章

根据自定义对象属性从数组列表中删除元素

列表项从下到上删除,但不是从上到下

使用拼接反应本机从数组中删除对象元素

无法删除 localStorage 数组项

python pop() ,如何在Python的列表或数组中移除元素

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