首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript中对象的特定属性

Javascript中对象的特定属性
EN

Stack Overflow用户
提问于 2015-01-30 05:08:48
回答 2查看 50关注 0票数 0

假设我有这个对象,前两个对象有购买的属性(用户购买了多少)

代码语言:javascript
复制
var Drugs = {
    Extasy : {
        name : "Extasy",
        value: 0,
        bought : 2,
        hist : [],
        qty : 0
    },
    Hash : {
        name : "Hash",
        value: 0,
        hist : [],
        bought: 3,
        qty : 0
    },
    Adrenaline :  {
        name : "Adrenaline",
        value: 0,
        hist : [],
        qty : 0
    },
    Cocaine : {
        name : "Cocaine",
        value: 0,
        hist : [],
        qty : 0
    },
    Mdma : {
        name : "Mdma",
        value: 0,
        hist : [],
        qty : 0
    }
};

我想要遍历毒品对象,以找出他们中的哪一个拥有购买的财产。

代码语言:javascript
复制
var outputs = '<li class="ui-li-has-count">';

for (var d in Drugs) {
    var dd = Drugs[d];

    if (Drugs.hasOwnProperty(dd.bought)) {
        // if (dd.bought != 'undefined' ){
        outputs+='<a  class="ui-btn ui-btn-icon-right ui-icon-carat-r" href="#myPopup" onclick="buyPopup(this.id)" id='+dd.name+'  >'+dd.name+'<span  class="ui-li-count">'+dd.bought+'</span> ';
    }
    else {
        outputs = false;
    }

    outputs += '</li></div>';
}

//getElementById
ast("panel1").innerHTML += outputs;

即使我购买的密钥有一个属性,我也总是得到false

EN

回答 2

Stack Overflow用户

发布于 2015-01-30 05:15:47

您不希望测试Drugs集合,而是希望测试单个药物对象。此外,hasOwnProperty确实将属性名称作为字符串,而不是属性值。所以请使用

代码语言:javascript
复制
if (dd.hasOwnProperty("bought"))

尽管在您的例子中,像这样的简单测试

代码语言:javascript
复制
if (dd.bought)

应该足够了,特别是当您想要像对待0值一样对待不存在的属性(解析为undefined)时。

票数 1
EN

Stack Overflow用户

发布于 2015-01-30 05:12:56

如果您想要查找“已购买”的属性,那么您需要在hasOwnProperty()调用中检查该单词。因此,更改这一行:

代码语言:javascript
复制
if (Drugs.hasOwnProperty(dd.bought)){

。。。对这个。。。

代码语言:javascript
复制
if (dd.hasOwnProperty("bought")){

在您的两个测试项目中,您当前都在检查项目是否在"Drugs“对象上分别具有名为"2”和"3“的属性(因为这就是您检查时dd.bought等于的值)。

在赋值dd之前,您的代码中也应该包含这一点:

代码语言:javascript
复制
if (Drugs.hasOwnProperty(d)){
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28224624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档