以编程方式选择javascript中对象的属性

以编程方式选择javascript中对象的属性,javascript,attributes,Javascript,Attributes,当我使用date\u窄(pdb,“datepub”,“1980”,“2000”)调用此函数时,我希望返回的计数为2,而pdb[0]。选择将设置为false。相反,我的调试器显示arr[k].dfield始终未定义,而我希望它是pdb[k].datepub。也就是说,我试图在运行时选择对象arr[k]的属性。有没有关于如何正确执行此操作的建议 var date_narrow = function (arr, dfield, earlier_date, later_date) { var c

当我使用
date\u窄(pdb,“datepub”,“1980”,“2000”)
调用此函数时,我希望返回的计数为2,而pdb[0]。选择将设置为false。相反,我的调试器显示arr[k].dfield始终未定义,而我希望它是pdb[k].datepub。也就是说,我试图在运行时选择对象arr[k]的属性。有没有关于如何正确执行此操作的建议

var date_narrow = function (arr, dfield, earlier_date, later_date) {
    var count = 0;
    for (var k = 0; k < arr.length; k++) {
        if (arr[k].selected) {
            // following are string comparisons
            if ((arr[k].dfield < earlier_date) || (arr[k].dfield > later_date)) {
                arr[k].selected = false;
            } else {
                count = count + 1;
            }
        }
    }
    return (count);
};

pdb = [{
    datepub: "2012",
    selected: true
}, {
    datepub: "1999",
    selected: true
}, {
    datepub: "1980",
    selected: true
}];
var date\u slown=函数(arr、D字段、较早的日期、较晚的日期){
var计数=0;
对于(变量k=0;k较晚的日期)){
arr[k]。所选值=false;
}否则{
计数=计数+1;
}
}
}
返回(计数);
};
pdb=[{
datepub:“2012年”,
所选:真
}, {
datepub:“1999年”,
所选:真
}, {
datepub:“1980年”,
所选:真
}];

在JavaScript中,数组语法(
obj[…]
)也可用于按名称访问对象的属性:

var date_narrow = function (arr, dfield, earlier_date, later_date) {
    var count = 0;
    for (var k = 0; k < arr.length; k++) {
        if (arr[k].selected) {
            // following are string comparisons
            if ((arr[k][dfield] < earlier_date) || (arr[k][dfield] > later_date)) {
                arr[k].selected = false;
            } else {
                count = count + 1;
            }
        }
    }
    return (count);
};
var date\u slown=函数(arr、D字段、较早的日期、较晚的日期){
var计数=0;
对于(变量k=0;k较晚的日期)){
arr[k]。所选值=false;
}否则{
计数=计数+1;
}
}
}
返回(计数);
};

很有效,谢谢。我认为只要dfield是一个合法javascript名称而不是保留字的字符串,那么arr[k].dfield的意思与arr[k][dfield]相同,并且更易于阅读。显然他们的意思不一样。你能解释一下吗?@user1416227它们的意思不同
x.prop
表示“从对象
x
获取名为
prop
的属性,
x[prop]
表示“获取名为
prop
的变量的值,然后获取具有该名称(或数组索引)的对象
x
的属性”。