如何访问另一个对象内的对象属性

我有一个这样的结构:

Customer { name: 'jen', options: [ Order { _price: 11, _option: 'vegan', _name: 'V for Vegan', _ingredients: [ Ingredient { name: 'mint', price: 0.5 }, Ingredient { name: 'peanuts', price: 0.5 } ] }, Order { _price: 11, _option: 'vegetarian', _name: 'Veggie', _ingredients: [] } ] } 

我很难注销这部分:

 _ingredients: [ Ingredient { name: 'mint', price: 0.5 }, Ingredient { name: 'peanuts', price: 0.5 } ] }, 

我可以注销这个:

 Options: vegan [object Object],[object Object] Options: vegetarian 

但我希望这是类似的东西

 Options: vegan mint, peanuts 

我最后一次尝试循环通过_ingredients但它返回undefined。 我的代码到目前为止:

 getBill() { let totalPrice = 0; console.log(` Your current bill: `) this.options.forEach((i) => { console.log(` Option: ${i._option} Extra Ingredients: ${i._ingredients.forEach((j) => {j.name})} `) totalPrice += i._price; }) console.log(` Total Price: ${totalPrice} $ `) } 

       

网上收集的解决方案 "如何访问另一个对象内的对象属性"

这是一个JavaScript函数错误,因为每个实际上并没有返回任何有用的东西。 如果你阅读文档,你会看到返回值被明确指定为undefined ,这就是你可能得到的。 你需要做些什么,比如把它们连在一起。

 Extra Ingredients: ${i._ingredients.map(_i => _i.name).join(', ')} 

使用Lodash或Underscore会给你一个map函数,也需要一个string:

 Extra Ingredients: ${_.map(i._ingredients, 'name').join(', ')} 

这实际上会返回你想要的值,它会取出name属性,然后你可以给它加上一个整型处理,把它合并成一个格式良好的string列表。