我想知道是否有可能获得一个元素的位置,该元素位于另一个数组内的关联数组中。例如,如果我将值“test1”存储在变量中,则可以获取test1的索引,然后将其与url键中的值进行匹配,并拉出位于相同位置的值(在本例中为www。 test.com/test1.html?提前谢谢。
编辑:我认为发布更多代码可能有所帮助。我到目前为止,我甚至无法正确解释它。我试图自己一起破解一些东西,但它并不是很有效。重要的部分是“更新链接”部分。那么让我们说randomlink_i = test1并且它是一个字符串。当我尝试将randomlink_i传递给indexOf函数时,我得到一个-1,用于刚刚低于它的警报。但是,如果我直接传入'test1'而不是变量,那么我得到0这是正确的位置。我离开基地了吗?
var _SERIAL = new Array(
{ done: false, initialized: false, market: '', submarket: '' },
{ done: false, value: '', type: '' },
{ done: [false, false], value: '', initialized: [false, false], visited: [false, false], darkbackground: [false,false] },
{ done: false, value: '' }
);
var _MARKETS = new Array('',
{
title: 'first set',
url: new Array('http://www.test.com/1.html','http://www.test.com/2.html','http: //www.test.com/3.html','http://www.test.com/4.html'),
anchortext: new Array('test1','test2','test3','test4'),
label: 'Register Now!'
},
{
title: 'second set',
url: new Array('http://www.test2.com/1.html','http://www.test2.com/2.html','http://www.test2.com/3.html','http://www.test2.com/4.html'),
anchortext: new Array('test12','test22','test32','test42'),
label: 'Register Now!'
}
)
function initMarket() {
_DEBUG ? debugWrite('initMarket()') : '';
var randomlink_i;
// if there are sub markets
_OPEN_RADIOS[_SERIAL[0].market] ? randomlink_i = randomPop(_MARKETS[_SERIAL[0].market].anchortext[_SERIAL[0].submarket].anchortext) : randomlink_i = randomPop(_MARKETS[_SERIAL[0].market].anchortext);
// update the link on step 3
var marketlinks = $$('#btn_foot a');
marketlinks[0].innerHTML = randomlink_i;
alert(randomlink_i);
alert(typeof(randomlink_i));
var marketlinkposition = _MARKETS[_SERIAL[0].market].anchortext.indexOf(randomlink_i);
alert(marketlinkposition);
marketlinks[0].href = _MARKETS[_SERIAL[0].market].url[marketlinkposition];
alert(_MARKETS[_SERIAL[0].market].url[marketlinkposition]);
// removal of "_counted" attribute
for (var i=0; i<marketlinks.length; i++) {
marketlinks[i]._counted = undefined;
marketlinks[i].removeAttribute('_counted');
}
}
答案 0 :(得分:0)
我不完全确定你在问什么,但在所有现代浏览器和IE9 +中都有indexOf method。 (如果你需要支持IE8-,那个页面也有一些你可以使用的代码。)
所以你可以搜索每个对象中的每个anchortext
数组,就像这样(我认为这就是你想要的,但如果我误解,请告诉我):
function getSomeItem(value) {
var i = _MARKETS.length,
current;
while (i) {
i -= 1;
current = _MARKETS[i].anchortext.indexOf(value);
if (current + 1) {
return _MARKETS[i].url[current];
}
}
}
所以你会像上面那样使用上面的函数:
getSomeItem('test1'); // returns 'http://www.test.com/1.html'