简单我有一个看起来像这样的对象,它直接从我的chrome浏览器中的存储过程返回。如何删除null
中提到javascript/angular 2
的人?
答案 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
对象应与key
和value
进行一对一映射。
答案 3 :(得分:1)
您在问题中附加的图片适用于object
而不是array
阅读this question个答案,了解它们之间的区别。
要移除null
中的所有array
值:
您可以使用Array#filter方法
实施例
const arr = [1, "a", null, "name", null, 100];
const newArr = arr.filter( e => e !== null);
console.log(newArr); // [1, "a", "name", 100]
&#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#filter,Array#reduce和Object#keys方法
实施例
object
&#13;
要移除array
ojebct
内const 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方法之外,您还可以使用以前所有方法的组合。
实施例
microbenchmark
&#13;