Javascript 无法读取属性';指数';未定义的。为什么它没有定义?
我试图在对象Javascript 无法读取属性';指数';未定义的。为什么它没有定义?,javascript,Javascript,我试图在对象卡内的数组powerfulfainst上执行indexOf 当我执行console.log(key)时,返回aaa 控制台日志(卡)返回 [ { key: 'aaa', counteredBy: [], powerfulAgainst: [ 'bbb' ] } ] 最后,console.log(card.powerfulfraft)返回未定义的(根据console.log(card),即使它不应该返回)。因此,我显然得到了类型错误:无法读取未定义的错
卡内的数组powerfulfainst
上执行indexOf
当我执行console.log(key)
时,返回aaa
控制台日志(卡)
返回
[ { key: 'aaa',
counteredBy: [],
powerfulAgainst: [ 'bbb' ] } ]
最后,console.log(card.powerfulfraft)
返回未定义的
(根据console.log(card)
,即使它不应该返回)。因此,我显然得到了类型错误:无法读取未定义的错误的属性'indexOf'
为什么会这样
var counters = originalCard["counteredBy"];
var powerfuls = originalCard["powerfulAgainst"];
counters.forEach(key => {
var card = cards.filter(function (obj) {
return obj.key == key;
})
if(card.length > 0) {
if(card.powerfulAgainst.indexOf(key) < 0) {
card.powerfulAgainst.push(key);
} else { console.log(card.key + " is already powerful against " + key); }
}
var counters=原始值[“counteredBy”];
var powerfuls=原始卡片[“PowerfulCountry”];
counters.forEach(键=>{
var卡=卡。过滤器(功能(obj){
返回obj.key==key;
})
如果(card.length>0){
if(卡.PowerFulf.indexOf(键)<0){
卡片。强力对抗。按(键);
}else{console.log(card.key+”已经对“+key”强大了);}
}
在您得到错误的那一行上,卡
是一个卡数组,而不是卡本身,因此它没有一个.powerfulfontrich
属性。卡
是一个数组。要访问其属性,您需要传递索引
。因为它只是一个对象的数组,而且索引从0卡开始[0]
访问第一个对象
var卡=[{
关键字:“aaa”,
对方:【】,
powerfulfaust:['bbb']
}]
console.log(cards[0].powerfulfaust)
card
是一个数组,而不是一个具有powerfulfaust
属性的对象。您要查找的对象位于card[0]
。我想cards.filter()
如果只找到一个对象,则返回一个对象。谢谢。cards.filter()
像其他人所说的那样返回一个数组。要实现您想要的,您需要使用cards.find()
,它返回第一个匹配项。