Javascript 如果名称和值对js中的值为空,则从数组中移除对象

Javascript 如果名称和值对js中的值为空,则从数组中移除对象,javascript,arrays,object,Javascript,Arrays,Object,这就是我的阵列的外观。如果值为空,我想从数组中删除名称和值对 我尝试了这个解决方案,但没有成功 [{name: "mode", value: "1"},{name: "group", value: ""},{name: "from_date", value: ""},{name: "to_date", value: "2018-10-16"},{name: "action", value: "ac_filter_transactions"} 我知道这是一个简单的问题,但我找不到任何相关的例子来

这就是我的阵列的外观。如果
为空,我想从数组中删除名称和值对

我尝试了这个解决方案,但没有成功

[{name: "mode", value: "1"},{name: "group", value: ""},{name: "from_date", value: ""},{name: "to_date", value: "2018-10-16"},{name: "action", value: "ac_filter_transactions"}
我知道这是一个简单的问题,但我找不到任何相关的例子来解决这个问题。我找到的所有示例和解决方案都是针对这类对象的

formData.map((i) => {
  (i.value == "") ? delete i: "";
});
这两个对象之间的区别是什么?

由于空字符串无效,因此您可以根据
值是否存在的布尔值使用和返回条目

let obj = {"firstname": "XYZ", "lastname": "ABC"}
let a=[{name:“mode”,value:“1”},{name:“group”,value:“},{name:“from_date”,value:”},{name:“to_date”,value:“2018-10-16”},{name:“action”,value:“ac_filter_transactions”};
让结果=a.filter(o=>(o.value));

控制台日志(结果)
Array.map将在新数组中返回相同数量的项。因此,您需要改用Array.reduce

a.filter(o => (o.value));

对于你的问题标题,我假设“移除”意味着改变数组(改变它的实际内容)。如果是这样,您可以这样做:

formData.reduce((result, item) => {
  if (item.value) {
    result.push(item);
  }

  return result;
}, []);
演示:
var arr=[{name:“mode”,value:“1”},{name:“group”,value:“},{name:“from_date”,value:”},{name:“to_date”,value:“2018-10-16”},{name:“action”,value:“ac_filter_transactions”};
const copy=arr.slice();
让计数=0;
copy.forEach((val,i)=>{if(!val.value)arr.splice(i-count++,1);});

console.log(arr);//打印原始数组,而不是副本
听起来是
数组的一个很好的用例。过滤器
。Re:Note;你的意思是写
==而不是
=
x!=“
过滤器仍然会过滤掉
false
null
0
未定义的
等。
const copy = arr.slice(); // copy of array for iterating without getting the index (`i`) wrong
let count = 0;
copy.forEach((val, i) => { if (!val.value) arr.splice(i - count++, 1); });
                      // maybe `val.value != ""` instead of `!val.value` ?