如何按值从Javascript对象数组中删除对象?

时间:2019-05-15 11:31:52

标签: javascript

我正在用javascript定义对象数组,并想根据对象属性删除值。

我使用了以下代码:

pyomo.repn.standard_repn

预期结果: 当我删除值时,它应该给我包含0个元素的数组。

实际输出: 当我删除值时,我得到的数组包含1个元素,并且元素值为null。

1 个答案:

答案 0 :(得分:0)

您可以使用Object.valuessplice。在函数内部,使用JSON.parse和JSON.stringify创建原始数组的新副本,以使原始数组不会被修改。在forEach回调中使用Object.values,它将给出一组值。然后使用includes检查使用Object.values创建的数组是否包含函数中传递的参数。如果为true,则使用splice从复制的数组中删除元素

var addedItems = [];
var item = {};
item["TId"] = "";
item["VNo"] = "";
item["IDate"] = "";
item["Rate"] = 22;
item["ItemId"] = 12;
item["Quantity"] = 1;
item["ItemTypeId"] = 3;
addedItems.push(item);

function removeValueFromObjectByValue(arr, num) {
  let newArr = JSON.parse(JSON.stringify(arr))
  arr.forEach(function(item, index) {
    let isNumPresent = Object.values(item).includes(num)
    if (isNumPresent) {
      newArr.splice(index, 1);
    }
  })
  return newArr;
}
console.log(removeValueFromObjectByValue(addedItems, 12));