我想做一些相对简单的事,我想无论如何。
我需要将页面的路径名与对象的kv对进行比较。例如:
if("pathname" === "key"){return value;}
几乎就是这样。我不确定如何在常规Javascript或jQuery中执行此操作。要么是可以接受的。
你可以在这里看到我的小提琴:http://jsfiddle.net/lz430/2rhds1x3/
JavaScript的:
var pageID = "/electrical-electronic-tape/c/864";
var pageList = [{
"/electrical-electronic-tape/c/864": "ElectronicTape",
"/industrial-tape/c/889": "IndustrialTape",
"/sandblasting-tape/c/900": "SandblastingTape",
"/Foam-Tape/c/875": "FoamTape",
"/double-coated-d-c-dhesive-tape/c/872": "DCTape",
"/Adhesive-Transfer-Tape/c/919": "ATTape",
"/Reflective-Tape/c/884": "ReflectiveTape",
"/custom-moulding": "CustomMoulding",
"/request-a-quote": "RequestQuote"
}];
var label = pageID in pageList;
$('.el').html(label);
答案 0 :(得分:5)
首先,你的" pageList"应该只是一个普通的对象,而不是数组中的对象:
var pageList = {
"/electrical-electronic-tape/c/864": "ElectronicTape",
"/industrial-tape/c/889": "IndustrialTape",
"/sandblasting-tape/c/900": "SandblastingTape",
"/Foam-Tape/c/875": "FoamTape",
"/double-coated-d-c-dhesive-tape/c/872": "DCTape",
"/Adhesive-Transfer-Tape/c/919": "ATTape",
"/Reflective-Tape/c/884": "ReflectiveTape",
"/custom-moulding": "CustomMoulding",
"/request-a-quote": "RequestQuote"
};
然后你可以设置"标签"来自映射的值:
var label = pageList[pageID] || "(not found)";
上述声明的最后一位将标签设置为"(未找到)"如果查找失败,可能适用于您的情况,也可能不适用。
答案 1 :(得分:0)
这取决于你想要实现的逻辑。如果你想说“如果对象有密钥,那么做X,如果没有,那么做Y”,那么你处理的方式不同于“如果密钥在那里就将标签设置为对象的密钥值,或者将其设置为undefined
或其他“。
对于第一种情况:
if (pageList.hasOwnProperty(pageID) ) {
label = pageList[pageID];
}
else {
// do whatever, maybe some error?
}
对于第二种情况,你可以说
var label = pageList[pageID] || 'notFound';
如@Pointy所示,如果您需要保留数组,请删除上面pageList[0]
的{{1}}和pageList
的数组或子系列pageList[0][pageID]
。