Javascript 从值为0的数组中删除对象
您好,我正在生成一个数组,其中包含来自外部数据的对象。以下是我的代码:Javascript 从值为0的数组中删除对象,javascript,Javascript,您好,我正在生成一个数组,其中包含来自外部数据的对象。以下是我的代码: modifyFatalitiesByCause(data) { let array = []; for (let x in data) { array.push({ "name": data[x]['HarmfulEvent'], "value": parseInt(data[x]['Deaths']), }) } return ar
modifyFatalitiesByCause(data) {
let array = [];
for (let x in data) {
array.push({
"name": data[x]['HarmfulEvent'],
"value": parseInt(data[x]['Deaths']),
})
}
return array;
}
这很好,可以输出这些数据:这里只是一个大数组的一小部分
[
{name: "Injured in Vehicle (Non-Collision)", value: 1},
{name: "Fire Hydrant", value: 1},
{name: "Snow Bank", value: 0},
{name: "Cargo/Equipment", value: 0}
]
我不希望值为0的对象出现在我的数组中。我是否需要在最后删除这些对象,或者我是否可以在数据循环中修改我的for x以只推送值不为0的对象
哪一个是更简单的解决方案,有人能帮忙吗
谢谢 尝试使用数组过滤器过滤结果。 参考文献:
尝试使用数组过滤器过滤结果。 参考文献:
您可以在最后将它们全部删除,但在构建阵列时不将它们推送到阵列中会更有效。 大概是这样的:
if (parseInt(data[x]['Deaths']) { // 0 is falsey
array.push({
"name": data[x]['HarmfulEvent'],
"value": parseInt(data[x]['Deaths']),
});
}
您可以在最后将它们全部删除,但在构建阵列时不将它们推送到阵列中会更有效。 大概是这样的:
if (parseInt(data[x]['Deaths']) { // 0 is falsey
array.push({
"name": data[x]['HarmfulEvent'],
"value": parseInt(data[x]['Deaths']),
});
}
您只需在for循环中添加一个检查,在数组中添加数据[x]['death']为非零的对象。请尝试以下操作:
for (let x in data) {
if(parseInt(data[x]['Deaths']) != 0){
array.push({
"name": data[x]['HarmfulEvent'],
"value": parseInt(data[x]['Deaths']),
})
}
}
您只需在for循环中添加一个检查,在数组中添加数据[x]['death']为非零的对象。请尝试以下操作:
for (let x in data) {
if(parseInt(data[x]['Deaths']) != 0){
array.push({
"name": data[x]['HarmfulEvent'],
"value": parseInt(data[x]['Deaths']),
})
}
}
是的,您可以在按ifparseIntdata[x]['Deathers']>0这样的数组上的元素之前进行检查,然后按非零值,但对我来说很酷: 让数组=[{ 名称:在车辆非碰撞中受伤, 价值:1 }, { 名称:消防栓, 价值:1 }, { 名称:雪滩, 数值:0 }, { 名称:货物/设备, 数值:0 } ]; 结果=array.filterm=>elm.value>0;
console.logresult 是的,您可以在按ifparseIntdata[x]['Deathers']>0这样的数组上的元素之前进行检查,然后按非零值,但对我来说很酷: 让数组=[{ 名称:在车辆非碰撞中受伤, 价值:1 }, { 名称:消防栓, 价值:1 }, { 名称:雪滩, 数值:0 }, { 名称:货物/设备, 数值:0 } ]; 结果=array.filterm=>elm.value>0;
console.logresult 在执行业务逻辑之前,最好创建一个带谓词的if语句来检查验证。这是我解决这个问题的办法
modifyFatalitiesByCause(data) {
let array = [];
for (let record in data) {
if(isDeathCountZero(record, data)){
array.push({
"name": data[record]['HarmfulEvent'],
"value": parseInt(data[record]['Deaths']),
});
}
}
return array;
}
isDeathCountZero(record, data){
return (parseInt(data[record]['Deaths']) != 0);
}
在执行业务逻辑之前,最好创建一个带谓词的if语句来检查验证。这是我解决这个问题的办法
modifyFatalitiesByCause(data) {
let array = [];
for (let record in data) {
if(isDeathCountZero(record, data)){
array.push({
"name": data[record]['HarmfulEvent'],
"value": parseInt(data[record]['Deaths']),
});
}
}
return array;
}
isDeathCountZero(record, data){
return (parseInt(data[record]['Deaths']) != 0);
}
array.filterx=>x.value?或者在按下按钮检查数据[x][“死亡”]!=0所以在添加前添加一个if检查….array.filterx=>x.value?或者在按下按钮检查数据[x][“死亡”]!=0因此,请在添加前添加一个if检查…@cup\u您应该接受此答案或amrender提供的答案_singh@cup_of你应该接受这个答案或者amrender_singhthanks的答案,但我同意M.Wyatt的解决方案。给你一个upvote@cup_of令人惊叹的没关系,你可以使用ifparseIntdata[x]['Deathers']>0,没有问题。祝你好运:谢谢你的回答,但我同意怀亚特先生的解决方案。给你一个upvote@cup_of令人惊叹的没关系,你可以使用ifparseIntdata[x]['Deathers']>0,没有问题。祝你好运: