无法显示阵列内容
问题描述:
var dataHolder = [
{
"letterA" : "Fruits",
"letterB" : "Veges",
"letterC" : "Meat"
}
];
console.log(dataHolder[0].letterA);
var result = "";
function getData(myLetter) {
for (var i = 0; i < dataHolder.length; i++) {
if(dataHolder[i][myLetter] === myLetter){
console.log(dataHolder[i][myLetter]);
}
else{
console.log("No data found");
}
}
}
getData("letterA");
这是我的代码,我只是想与传递的参数数组的内容相匹配,但每次它给无数据时发现,作为输出和不匹配的内容,它似乎我在这里错过了非常基本的东西。 任何帮助将不胜感激。谢谢!无法显示阵列内容
答
你的配对是错误的。 你匹配letters == fruites
。你应该检查是关键存在与否,这已经足够使用此之下hasOwnProperty()
检查。我是提了错误
var dataHolder = [{
"letterA": "Fruits",
"letterB": "Veges",
"letterC": "Meat"
}];
var result = "";
function getData(myLetter) {
for (var i = 0; i < dataHolder.length; i++) {
console.log('this is the pblm '+dataHolder[i][myLetter] +' != '+myLetter)
if (dataHolder[i].hasOwnProperty(myLetter)) {
console.log(dataHolder[i][myLetter]);
} else {
console.log("No data found");
}
}
}
getData("letterA");
为了您的使用方式与for...in
var dataHolder = [{
"letterA": "Fruits",
"letterB": "Veges",
"letterC": "Meat"
}];
var result = "";
function getData(myLetter) {
for (var i in dataHolder) {
if (dataHolder[i].hasOwnProperty(myLetter)) {
console.log(dataHolder[i][myLetter]);
} else {
console.log("No data found");
}
}
}
getData("letterA")
答
您正在使用是错键比较值。
的hasOwnProperty()方法返回一个布尔值,指示 对象是否具有指定的属性作为自己的(未继承)属性。
使用hasOwnProperty
检查钥匙的存在与否。
dataHolder[i].hasOwnProperty(myLetter)
var dataHolder = [
{
"letterA" : "Fruits",
"letterB" : "Veges",
"letterC" : "Meat"
}
];
var result = "";
function getData(myLetter) {
for (var i = 0; i < dataHolder.length; i++) {
if(dataHolder[i].hasOwnProperty(myLetter)){
console.log(dataHolder[i][myLetter]);
}
else{
console.log("No data found");
}
}
}
getData("letterA");
+0
谢谢你!有效 – tankit88
你是比较关键中的价值。例如,如果您调用getData(“letterA”),则比较将在Fruits和letterA之间进行比较。 –
这是一个json对象使用json函数,如json.hasOwnProperty(key)来实现您的目标。 – Osama