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()
,它返回第一个匹配项。