如何访问另一个对象内的对象属性
我有一个这样的结构:
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列表。