如何更新JavaScript资产映射以返回动态字段?

如何更新JavaScript资产映射以返回动态字段?,javascript,arrays,json,mapping,Javascript,Arrays,Json,Mapping,当未找到匹配项时,如何更新myAssetMap使用的函数来处理情况?鉴于: const myAssetMap = { Generic: { name: 'Generic', bkgHex: '#eee', fontHex: '#aaa', }, Specific1: { name: 'Specific1', bkgHex: '#131sde', fontHex: '#FFF', }, Specific2: { name:

当未找到匹配项时,如何更新myAssetMap使用的函数来处理情况?鉴于:

const myAssetMap = {
  Generic: {
    name: 'Generic',
    bkgHex: '#eee',
    fontHex: '#aaa',
  },
  Specific1: {
    name: 'Specific1',
    bkgHex: '#131sde',
    fontHex: '#FFF',
  },
  Specific2: {
    name: 'Specific2',
    bkgHex: '#131sde',
    fontHex: '#FFF',
  },
 ...
我可以从myAssetMap中找到如下值:

const getAsset = (name, type) => {
  return return myAssetMap[name][type];
}

console.log( getAsset('Specific1', 'name') );
console.log( getAsset('Specific2', 'name') );
这很有效。但我需要有活力

在未找到资产的情况下,例如:

console.log( getAsset('XXXXXX', 'name') );
如何让上面的函数使用Generic.bkgHex和Generic.fontHex,但让Generic.name成为传递给getAsset func的任何函数。例如,期望的结果是:

console.log( getAsset('XXXXXX', 'name') );
$ XXXXXX
console.log( getAsset('XXXXXX', 'bkgHex') );
$ #eee
console.log( getAsset('XXXXXX', 'fontHex') );
$ #aaa

使用此三元条件:

myAssetMap[name] ? (myAssetMap[name][type] || myAssetMap['Generic'][type]) : (type === 'name' ? name : myAssetMap['Generic'][type])
const myAssetMap={
通用:{
名称:'通用',
bkgHex:“#eee”,
fontHex:“#aaa”,
},
具体内容1:{
名称:'Specific1',
bkgHex:“#131sde”,
fontHex:“#FFF”,
},
具体内容2:{
名称:'Specific2',
bkgHex:“#131sde”,
fontHex:“#FFF”,
}
};
常量getAsset=(名称、类型)=>{
返回myAssetMap[name]?(myAssetMap[name][type]| | myAssetMap['Generic'][type]):(type==='name'?name:myAssetMap['Generic'][type]);
}
log(getAsset('XXXXXX','name');
log(getAsset('XXXXXX','bkgHex');
日志(getAsset('XXXXXX','fontHex');
log(getAsset('HELLO','name');
log(getAsset('HELLO','bkgHex');
log(getAsset('HELLO','fontHex');
log(getAsset('Specific1','name');

log(getAsset('Specific2','name')使用此三元条件:

myAssetMap[name] ? (myAssetMap[name][type] || myAssetMap['Generic'][type]) : (type === 'name' ? name : myAssetMap['Generic'][type])
const myAssetMap={
通用:{
名称:'通用',
bkgHex:“#eee”,
fontHex:“#aaa”,
},
具体内容1:{
名称:'Specific1',
bkgHex:“#131sde”,
fontHex:“#FFF”,
},
具体内容2:{
名称:'Specific2',
bkgHex:“#131sde”,
fontHex:“#FFF”,
}
};
常量getAsset=(名称、类型)=>{
返回myAssetMap[name]?(myAssetMap[name][type]| | myAssetMap['Generic'][type]):(type==='name'?name:myAssetMap['Generic'][type]);
}
log(getAsset('XXXXXX','name');
log(getAsset('XXXXXX','bkgHex');
日志(getAsset('XXXXXX','fontHex');
log(getAsset('HELLO','name');
log(getAsset('HELLO','bkgHex');
log(getAsset('HELLO','fontHex');
log(getAsset('Specific1','name');

log(getAsset('Specific2','name')这是您想要的:
getAsset('XXXXXX','name')=XXXXXX
?是的,现在它返回'Generic'这是您想要的:
getAsset('XXXXXX','name')=XXXXXX
?是的,现在它返回'Generic'@AnApprentice您将其更改为
如果是
@AnApprentice您将其更改为
如果是