const arr = [
{
"name": "证明组件 1",
“价值观”:[
{
"component": "证明组件 1"
},
{
"component": "证明组件 1"
},
{
"component": "证明组件 1",
}
]
},
{
"name": "证明组件 2",
“价值观”:[
{
“id”:“10005884”,
"url": "https://www.msn.com",
"bfaId": "G44.5.3.1N/A",
"component": "证明组件 2"
},
{
“id”:“10005883”,
"url": "https://www.hotmail.com",
"bfaId": "G44.5.3.2N/A",
"component": "证明组件 2"
}
]
},
{
"name": "证明组件 3",
“价值观”:[
{
“id”:“10005882”,
"url": "https://www.rediffmail.com",
"bfaId": "G44.5.3.3N/A",
"component": "证明组件 3"
}
]
}
]
const bool = arr.map(group => group.values.every(val => val.id));
console.log(bool);</pre>
</p>
<p>我有三个对象,名称分别为论证组件 1、论证组件 2、论证组件 3。我得到的预期输出为 false、true、true。这是什么原因呢?我想把属性添加到现在有对象数据库中,作为 <code>name</code></p> 下方的isInvalid: true/false
<p>预期的O/P(在每个具有以下键值的对象中添加属性)
<code>无效:真/假</code></p>
P粉6198961452023-09-05 10:42:18
您应该使用 some(),而不是 every()。
const bool = arr.map(group => group.values.some(val => val.id)).filter(bool => !bool).toString();
every() 方法用于检查数组中的所有元素是否满足给定条件。阵列。 some() 方法用于检查数组中至少有一个元素是否满足给定的条件。
P粉3365367062023-09-05 10:07:13
那是因为你的算法不正确。 every
方法将检查是否所有对象都有一个 id,但这不是您想要的,对吧?
所以试试这个吧
const bool = arr.map(group => group.values.some(val => val.id));