如何从数据库中删除对象的空值?

时间:2017-09-22 14:59:01

标签: javascript angular object

简单我有一个看起来像这样的对象,它直接从我的chrome浏览器中的存储过程返回。如何删除null中提到javascript/angular 2的人?

Object

4 个答案:

答案 0 :(得分:6)

使用数组过滤器:

var filtered = arr.filter(el => el !== null);

甚至更简单:

var filtered = arr.filter(el => el);

答案 1 :(得分:6)

null似乎是唯一的假值,所以你可以只做

arr = arr.filter(Boolean);

如果它只是一个带键的对象,你可以做

var obj = {c1 : 's', c2 : 's', c3 : null, c4 : null};

Object.entries(obj).forEach( o => (o[1] === null ? delete obj[o[0]] : 0));

console.log(obj);

答案 2 :(得分:3)

首先,根据您提供的图片,您没有阵列。这是一个object,由于你被误导的头衔,每个人都认为你有一个array。所以你不能马上使用filter功能。您可以执行以下操作来过滤object



var object = {
  C1: "123456",
  C2: "1234",
  C3: null,
  C4: null,
  C5: null,
  C6: "4567"
}

var MAP = {
  C1: "Product",
  C2: "Product Description",
  C3: "Date",
  C4: "",
  C5: "",
  C6: "Date"
}

for (var key in object) {
  if (object[key] === null) {
    delete object[key];
  } else {
    object[MAP[key]] = object[key];
    delete object[key];
  }
}

console.log(object);




<强>更新

我更新了您的答案以满足额外需求。 请注意,MAP对象应与keyvalue进行一对一映射。

答案 3 :(得分:1)

您在问题中附加的图片适用于object而不是array

阅读this question个答案,了解它们之间的区别。

要移除null中的所有array值:

您可以使用Array#filter方法

实施例

&#13;
&#13;
const arr = [1, "a", null, "name", null, 100];
const newArr = arr.filter( e =>   e !== null);

console.log(newArr); // [1, "a", "name", 100]
&#13;
&#13;
&#13;

null中删除object值为const obj = {a: 1, b: "name", c: null, d: 100, e: null}; const newObj = Object.keys(obj) .filter(e => obj[e] !== null) .reduce( (o, e) => { o[e] = obj[e] return o; }, {}); console.log(newObj); // {"a": 1,"b": "name", "d": 100 }的所有媒体资源

您可以使用Array#filterArray#reduceObject#keys方法

实施例

&#13;
&#13;
object
&#13;
&#13;
&#13;

要移除array ojebctconst arrOfObjects = [ {a: null, b: "name", c: null, d: 100, e: "name"}, {f: 1, g: null, h: 23, i: null, j: null}, {k: null, l: "name", m: null, n: 100, o: "name"} ] const newArrOfObjects = arrOfObjects .map( obj => Object.keys(obj).filter(e => obj[e] !== null) .reduce((o, e) => {o[e] = obj[e]; return o;}, {}) ) console.log(newArrOfObjects) library(stringr) format_to_date <- function(x){ year <- str_extract(x, "^\\d{4}") if (grepl("M", x)) { month <- str_pad(str_extract(x, "\\d{1,2}$"), width = 2) paste0(year, "-", month, "-01") } else if (grepl("Q", x)) { month <- as.numeric(str_extract(x, "\\d{1}$")) month <- 1 + (month - 1) * 3 paste0(year, "-", month, "-01") } else{ paste0(year, "-01-01") } } Dframe <- data.frame(string = c("2008M5", "2009Q3", "2011"), stringsAsFactors = FALSE) as.Date(vapply(Dframe$string, format_to_date, character(1))) 内的所有媒体资源

除了Array#map方法之外,您还可以使用以前所有方法的组合。

实施例

&#13;
&#13;
microbenchmark
&#13;
&#13;
&#13;