我有一个看起来像这样的数组:
我需要 id 在哪里slug === 'slug'
let activeFaq = this.faq.filter(obj => obj.items.filter(item => item.slug === 'slug'));
console.log(activeFaq.id);
这给了我一个未定义的。我应该得到 2729
我有一个看起来像这样的数组:
我需要 id 在哪里slug === 'slug'
let activeFaq = this.faq.filter(obj => obj.items.filter(item => item.slug === 'slug'));
console.log(activeFaq.id);
这给了我一个未定义的。我应该得到 2729
有多种方法可以解决这个问题。如果可以使用.flatMap,那么一种解决方案是将所有项目展平为一个数组,然后使用.find:
const item = this.faq.flatMap(obj => obj.items).find(item => item.slug === 'slug')
然而,扁平化似乎有点不必要。避免不必要计算的一种方法是使用带有无聊循环的辅助函数:
function findItem(faqs, callback) {
for (const faq of faqs) {
const item = faq.find(callback);
if (item) {
return item;
}
}
}
const activeFaq = findItem(this.faq, item => item.slug === 'slug');
var activeFaq = this.faq.filter(obj => obj.items.some(item => item.slug === 'slug'))[0];
console.log(activeFaq.items[0].id); //2729
let activeFaq = this.faq.reduce( ( obj ) => {
const foundItem = obj.items.find( ( item ) => {
return item.slug === 'slug'
} )
if( foundItem ) {
acc = foundItem
}
return acc
}, null )
console.log(activeFaq.id);