如何更新JavaScript资产映射以返回动态字段?
当未找到匹配项时,如何更新myAssetMap使用的函数来处理情况?鉴于:如何更新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:
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您将其更改为如果是
。