您好,我正在根据一些外部数据生成一个包含对象的数组。这是我的代码:
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 in data
循环以仅推送没有值0
的对象。
哪个是更简单的解决方案,任何人都可以提供帮助吗?
谢谢!
答案 0 :(得分:3)
是的,您可以在将元素推入像这样的if(parseInt(data[x]['Deaths']) > 0
之前进行检查,然后再推非零值,但是Array.prototype.filter()对我来说很酷:)
let array = [{
name: "Injured in Vehicle (Non-Collision)",
value: 1
},
{
name: "Fire Hydrant",
value: 1
},
{
name: "Snow Bank",
value: 0
},
{
name: "Cargo/Equipment",
value: 0
}
];
result = array.filter(elm => elm.value > 0);
console.log(result);
答案 1 :(得分:2)
您可以在最后将它们全部删除,但是在构建时不将它们推入阵列将更加有效。 像这样:
1 + 2*3 = 7
答案 2 :(得分:1)
您只需在<script>
import {MDCTopAppBar} from '@material/top-app-bar';
import {MDCDrawer} from "@material/drawer";
const drawer = MDCDrawer.attachTo(document.querySelector('.mdc-drawer'));
const topAppBar = MDCTopAppBar.attachTo(document.getElementById('app-bar'));
topAppBar.setScrollTarget(document.getElementById('main-content'));
topAppBar.listen('MDCTopAppBar:nav', () => {
drawer.open = !drawer.open;
});
</script>
循环中添加一个检查,即可在您的for
非零的数组中添加对象。请尝试以下操作:
data[x]['Deaths'])
答案 3 :(得分:1)
始终最好在业务逻辑执行之前创建谓词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);
}
答案 4 :(得分:-1)