You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何将对象属性值作为key传入另一对象获取对应值

实现方案

在对象字面量声明阶段无法直接引用自身的type属性,需要通过后续遍历或者工厂函数的方式动态赋值,具体有两种常用实现方式:

方案1:先定义商品基础信息,再批量填充图片链接

这种方式适合已经有现成商品数组的场景,遍历数组给每一项追加img属性:

// 已有的图片链接映射
const imageURL = {
  brakePad: "some_url_string",
  tieRodEnd: "some_url_string",
  rackEnd: "some_url_string",
};

// 先定义不带img的商品数组
const products = [
  {
    type: 'brakePad',
    brand: 'Akebono'
  },
  {
    type: 'tieRodEnd',
    brand: 'OtherBrand'
  }
  // 其他商品项
];

// 遍历批量赋值img
products.forEach(item => {
  // 直接用当前项的type作为key取值,无需硬编码
  item.img = imageURL[item.type] ?? '默认图片链接(可选,避免key不存在时返回undefined)';
});

方案2:通过工厂函数生成商品对象

这种方式适合动态生成商品数组的场景,在创建对象时直接计算img属性值:

const imageURL = {
  brakePad: "some_url_string",
  tieRodEnd: "some_url_string",
  rackEnd: "some_url_string",
};

// 封装商品创建工厂函数
function createProduct(type, brand) {
  return {
    type,
    brand,
    // 直接用传入的type作为key取值
    img: imageURL[type] ?? '默认图片链接'
  }
}

// 生成商品数组
const products = [
  createProduct('brakePad', 'Akebono'),
  createProduct('tieRodEnd', 'OtherBrand'),
  createProduct('rackEnd', 'ThirdBrand')
];

注意事项

不要尝试在对象字面量中直接写img: imageURL[this.type],对象声明阶段this并不会指向当前正在创建的对象,会导致取值失败。

内容的提问来源于stack exchange,提问作者The Noob Programmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:48:01