2 回答
TA贡献1780条经验 获得超1个赞
你可以简单地通过循环ecom对象,检查以下道具存在detail','add','remove','checkout','purchase'的ecom对象,
像这样的东西
let outerKey = ['detail','add','remove','checkout','purchase']
let foundProducts = outerKey.reduce((op,inp) => {
if(ecom[inp] && ecom[inp].products && ecom[inp].products.length){
op.push(ecom[inp].products)
}
return op
},[])
尝试使用正则表达式:
var ecomProducts = ecom[('detail'|'add'|'remove'|'checkout'|'purchase')]['products'];
不,这不是正则表达式,这只是逻辑或,所以你总是以ecom['checkout']['products']
TA贡献1790条经验 获得超9个赞
假设你有一个这样的对象:
ecommerce = {
add: { products: ['add products'] },
remove: { products: ['remove'] },
detail: { products: ['prod details'] },
checkout: { products: ['checkout'] },
purchase: { products: ['purchase'] }
};
for( var x in ecommerce )"products" in ecommerce[ x ] ?
console.log( ecommerce[ x ].products ) : 0;
你不能从你遇到的任何一棵树上捡到苹果——你需要访问包含它们的树和树枝......
最简单和最便携的方法是拥有一个使用以下表达式的函数:
for( var x in ecommerce )"products" in ecommerce[ x ] ?
console.log( ecommerce[ x ].products ) : 0;
并无错误运行。
添加回答
举报