如何将字符串与对象键进行比较并获得该键的值?

时间:2015-09-09 19:37:01

标签: javascript jquery arrays object

我想做一些相对简单的事,我想无论如何。

我需要将页面的路径名与对象的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);

2 个答案:

答案 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]