如果属性不存在,则不显示对象的数据
Don't display object's data if property doesn't exist
如果对象中缺少属性,我想选择不显示对象的数据。我正在从 REST API 调用数据,如果该项目不再可供购买,则会从对象中删除price_1
属性。我已经对delete
做了一些研究,但根据我的理解,这只是为了删除对属性的引用,而不是对象。如果属性不存在,我不确定是否可以完全删除对象,但这将是理想的解决方案。我还想知道该解决方案是否更适合作为自定义过滤器。
我尝试了以下方法:
angular.module('foldsApp.productModule', [])
.controller('ProductsController', ['$scope', '$log', 'APIService', function ($scope, $log, APIService) {
$scope.products = {};
APIService.getData()
.success(function(res) {
$scope.products = res.results;
for (price in $scope.products) {
if($scope.products[price].price_1 === 'undefined') {
// remove object?
}
}
})
.error(function(data, status, headers, config) {
$log.log('error: ' + data);
});
}]);
现在,if($scope.products[price].price_1 === 'undefined')
相当于false
.我不完全确定为什么会发生这种情况,但我认为这是因为price_1
确实存在于$scope.products
的大多数对象上,我不确定如何处理它。这是我第一次涉足"更高"级别的JavaScript,所以有一些事情在我的脑海中浮现。非常感谢任何有用的资源,谢谢。
HTML 如果这很重要:
<ul>
<li dir-paginate="product in products | itemsPerPage: 30">
<a href="{{ product.link_1 }}"><img src="{{ product.category_product_image_placeholder_image }}" /></a>
<br>
{{ product.product_name_text }}
<br>
<strong>{{ product.price_1 | currency }}</strong>
</li>
</ul>
要专门检查未定义,您应该使用 typeof variable === 'undefined'
:
所以:
if(typeof $scope.products[price].price_1 === 'undefined'){
delete $scope.products[price];
}
删除将删除对象的属性(这就是它看起来的样子),如果它们没有在其他任何地方引用,垃圾回收器将拾取它们。
相关文章:
- 在javascript中添加和显示对象的随机数组中的视频
- 如何使用for in循环在javascript中显示对象中的对象
- 如何移动PIXI显示对象
- 在鼠标悬停时显示对象的边框(Fabricjs)
- 使用jquery在不同的表中显示对象的元素
- 剑道角's自动完成在结果中显示对象
- ExtJS显示对象属性
- 在 angularjs 的数组中显示 x 对象
- JQuery UI 自动完成在滚动菜单时在文本框中显示 [对象对象]
- JSON对象在控制台中显示对象,但也包含来自php脚本返回的字符串的“未定义”
- 如果属性不存在,则不显示对象的数据
- 挖空 JS为每个绑定显示 [对象对象]
- 翡翠 - 显示对象属性 - 未定义
- 单击超链接后在同一页面中显示对象
- 渲染场景时不显示对象
- 它在文本区域中显示“[对象][对象]”
- Angularjs.在 http.get 之后显示对象属性
- 如何在嵌套级别不受限制的情况下显示对象的动态嵌套子数组对象
- 如何在IE9上显示对象的内容
- JavaScript 警报函数不会显示对象