猿问

用于访问嵌套对象的正则表达式

我有一些 JS 对象,它们每个都有一个名为“products”的孙子属性。

例如 ecommerce.add.products, ecommerce.remove.products, ecommerce.detail.products, ecommerce.checkout.products, ecommerce.purchase.products

无论上面的特定对象是什么,我都想访问 products 数组。

尝试使用正则表达式:

var ecomProducts = ecom[('detail'|'add'|'remove'|'checkout'|'purchase')]['products'];

类型错误:ecom[(((("detail" | "add") | "remove") | "checkout") | "purchase")] 未定义

var ecomProducts = ecom[/'detail'|'add'|'remove'|'checkout'|'purchase'/]['products'];

类型错误:ecom[/'detail'|'add'|'remove'|'checkout'|'purchase'/] 未定义

无论父母姓名如何,如何访问嵌套的孙子“产品”对象?


浮云间
浏览 123回答 2
2回答

慕神8447489

你可以简单地通过循环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']

富国沪深

假设你有一个这样的对象: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;并无错误运行。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答