使用值从解析json中删除对象

时间:2017-03-28 07:57:09

标签: javascript arrays json

我将数据推入数组并在json解析数组后看起来像。 使用数组推送

    itens_arr.push(JSON.stringify({
             id_item: $item_id,
             quantity: $item_quantity,
             assembly: assemble_val,
             unassembly:disassemble_val
           }));
 $.cookie("itens", itens_arr);

将价值保存到cookies中

删除功能

var get_parse =JSON.parse($.cookie("itens"));
alert(get_parse)

低于值

{"id_item":"43","quantity":"2","assembly":1,"unassembly":0},{"id_item":"41","quantity":"3","assembly":1,"unassembly":0}

删除我使用此代码。但没有工作

  var filtered = get_parse.id_item.filter(function(item) { 
           return item.id_item !== remove_val;  
        });

但如何删除完整对象,在我的情况下,我想删除完整的对象基于" id_item"值

4 个答案:

答案 0 :(得分:1)

您需要迭代数据数组并测试正确的值。

var data = [{ id_item: "43", quantity: "2", assembly: 1, unassembly: 0 }, { id_item: "41", quantity: "3", assembly: 1, unassembly: 0 }],
    remove_val = '41',
    filtered = data.filter(function(item) {
        return item.id_item !== remove_val;
    });
        
console.log(filtered);

答案 1 :(得分:0)

<强>第一

您提供了2个对象而不是数组。 []遗失了。确保你有一个阵列。

<强>第二

您的remove_val应该是一个字符串,因为您的对象id_item是字符串。

const get_parse = [{
    "id_item": "43",
    "quantity": "2",
    "assembly": 1,
    "unassembly": 0
  },
  {
    "id_item": "41",
    "quantity": "3",
    "assembly": 1,
    "unassembly": 0
  }
];
const remove_val = "43";
console.log(get_parse.filter(d=>d['id_item']!==remove_val));

答案 2 :(得分:0)

    You can use $.grep , make sure you have use '[]' brackets


var my = [{ "id_item": "43", "quantity": "2", "assembly": 1, "unassembly": 0 } , { "id_item": "41", "quantity": "3", "assembly": 1, "unassembly": 0 }]
        var data = $.grep(my, function (e) {
            return e.id_item != 43;
        });
        console.log(data);

答案 3 :(得分:0)

一些观察结果:

  • get_parse应该是array,因为itens包含array of objects而不是single个对象。

    因此,get_parse应该是这样的。

    [{"id_item":"43","quantity":"2","assembly":1,"unassembly":0},
    {"id_item":"41","quantity":"3","assembly":1,"unassembly":0}]
    
  • 数组filter()方法适用于array而不是string。它将创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。

    因此,如果您尝试过滤字符串(get_parse.id_item),则会出现以下错误

      

    未捕获的TypeError:get_parse.id_item.filter不是函数

试试这个:

var get_parse = [{"id_item":"43","quantity":"2","assembly":1,"unassembly":0},
        {"id_item":"41","quantity":"3","assembly":1,"unassembly":0}]

var remove_val = "43";

var filtered = get_parse.filter(function(item) { 
           return item.id_item !== remove_val;  
        });

console.log(filtered);