无法仅使用underscore.js或.filter()返回的值返回数组列表对象

时间:2017-10-03 12:33:42

标签: javascript jquery underscore.js

我正在尝试从数组中删除一个项目并返回整个数组列表但由于某种原因,.filter()或_.filter()正在清除我的主对象“itemsList”并仅保留数组中的值。

var arr = {"itemsList":[{"id":11000,"name":"Demo","description":"Demo Description"},{"id":"222010","name":"test item","description":"test item desc\n"}]};

var resourceId = "222010";

var out = _.filter(arr.itemsList, function(item){
   return item.id !== resourceId;
});

var itemsList = [];

var newOut = itemsList.push(out);


document.getElementById('result').value = JSON.stringify(out);

我需要以相同的方式重新调整我的数组,并保留列表中的其他项目,不包括id变量,如:

{"itemsList":[{"id":11000,"name":"Demo","description":"Demo Description"}]}

随意使用我的小提琴https://jsfiddle.net/RicardoAlves/wbnv3040/

谢谢!

2 个答案:

答案 0 :(得分:2)

我认为问题在于您没有根据需要格式化输出。

var arr = {
  "itemsList": [{
    "id": 11000,
    "name": "Demo",
    "description": "Demo Description"
  }, {
    "id": "222010",
    "name": "test item",
    "description": "test item desc\n"
  }]
};

var resourceId = "222010";

var out = _.filter(arr.itemsList, function(item) {
  return item.id !== resourceId;
});

var itemsList = { "itemList": out };

console.log(JSON.stringify(itemsList));

您正在过滤掉不需要的项目,但只输出项目

输出:

  

{“itemList”:[{“id”:11000,“name”:“Demo”,“description”:“Demo Description”}]}

答案 1 :(得分:1)

过滤器函数返回一个新数组。

var out = _.filter(arr.itemsList, function(item) {
       return item.id !== resourceId;
     });

arr.itemsList=out

document.getElementById('result').value = JSON.stringify(arr);