Javascript 如何使用jquery创建哈希对象/数组?

Javascript 如何使用jquery创建哈希对象/数组?,javascript,jquery,hash,prototypejs,Javascript,Jquery,Hash,Prototypejs,我知道Javascript原型框架中有一个Hash()对象,但是Jquery中有类似的东西吗 我希望坚持使用一个javascript框架,而不是将原型框架和JQuery框架混合使用,因为我担心会出现冲突并产生副作用 所以我的问题是:如何使用jquery创建哈希对象/数组 以下是我的功能: /* prototype framework, I want to change this to jQuery! */ var starSaves = new Hash(); function myHover

我知道Javascript原型框架中有一个Hash()对象,但是Jquery中有类似的东西吗

我希望坚持使用一个javascript框架,而不是将原型框架和JQuery框架混合使用,因为我担心会出现冲突并产生副作用

所以我的问题是:如何使用jquery创建哈希对象/数组

以下是我的功能:

/* prototype framework, I want to change this to jQuery! */
var starSaves = new Hash();

function myHover(id, pos)
{
    var starStrip = $('star_strip_' + id);    
    if (starSaves.keys().indexOf(id) == -1)
    {
        var starSave = new Array();
        var imgs = starStrip.select("img")
        alert(imgs);
        for (var i = 0; i < imgs.length; i++)
        {
            starSave[starSave.length] = imgs[i].src;
            if (i < pos)
                imgs[i].src = "/images/star_1.gif";
            else
                imgs[i].src = "/images/star_0.gif";

        }
        starSaves.set(id, starSave);
    }
}
/*原型框架,我想将其更改为jQuery*/
var starSaves=newhash();
功能myHover(id、pos)
{
var starStrip=$('star_strip_'+id);
if(starSaves.keys().indexOf(id)=-1)
{
var starSave=新数组();
var imgs=starStrip.select(“img”)
警报(imgs);
对于(变量i=0;i
浏览jQuery文档,我没有看到任何专门针对这一点的内容。但只需使用常规javascript对象即可轻松完成此操作:

var starSaves = {};
function myHover(id, pos)
{
    var starStrip = $('star_strip_' + id);    
    if (typeof starSaves[id] == 'undefined')
    {
        var starSave = new Array();
        var imgs = starStrip.select("img")
        alert(imgs);
        for (var i = 0; i < imgs.length; i++)
        {
            starSave[starSave.length] = imgs[i].src;
            if (i < pos)
                imgs[i].src = "/images/star_1.gif";
            else
                imgs[i].src = "/images/star_0.gif";

        }
        starSaves[id] = starSave;
    }
}
var-starSaves={};
功能myHover(id、pos)
{
var starStrip=$('star_strip_'+id);
if(starSaves的类型[id]=“未定义”)
{
var starSave=新数组();
var imgs=starStrip.select(“img”)
警报(imgs);
对于(变量i=0;i
基本的
散列可以通过基本的JavaScript而不是jQuery来实现(我知道Prototype的散列增加了额外的功能,但这里不使用它)

var-starSaves={};
功能myHover(id、pos)
{
如果(!starSaves.hasOwnProperty(id)){
var starSave=starSaves[id]=[];
$('#star_strip.'+id+'img').attr('src',函数(索引,当前){
starSave.push(当前);
返回(索引
据我所知,jQuery中没有与原型哈希等价的东西

以下内容对你有什么用处吗?使用jQuery

var-starSaves={};
功能myHover(id、pos)
{
var starStrip=$('.star_strip_'+id);
如果(!starSaves[id])
{
var starSave=[];
starStrip.each(函数(索引、元素){
starSave[index]=$(元素).attr('src');
$(element.attr('src',index
有一个独立的哈希表实现,名为(完全公开:我写的)。使用它,您的代码将是:

var starSaves = new Hashtable();

function myHover(id, pos)
{
    var starStrip = $('star_strip_' + id);
    if (!starSaves.containsKey(id))
    {
        var starSave = new Array();
        var imgs = starStrip.select("img")
        alert(imgs);
        for (var i = 0; i < imgs.length; i++)
        {
            starSave[starSave.length] = imgs[i].src;
            if (i < pos)
                imgs[i].src = "/images/star_1.gif";
            else
                imgs[i].src = "/images/star_0.gif";

        }
        starSaves.put(id, starSave);
    }
}
var starSaves=newhashtable();
功能myHover(id、pos)
{
var starStrip=$('star_strip_'+id);
如果(!starSaves.containsKey(id))
{
var starSave=新数组();
var imgs=starStrip.select(“img”)
警报(imgs);
对于(变量i=0;i
我认为您不需要jQuery来实现这一点

var hashtable = {
    hash: {},
    exists: function(key){
       return this.hash.hasOwnProperty(key);
    },
    get: function(key){
        return this.exists(key)?this.hash[key]:null;
    },
    put: function(key, value){
        this.hash[key] = value;
    }
}

谢谢,它小巧实用!
var starSaves = new Hashtable();

function myHover(id, pos)
{
    var starStrip = $('star_strip_' + id);
    if (!starSaves.containsKey(id))
    {
        var starSave = new Array();
        var imgs = starStrip.select("img")
        alert(imgs);
        for (var i = 0; i < imgs.length; i++)
        {
            starSave[starSave.length] = imgs[i].src;
            if (i < pos)
                imgs[i].src = "/images/star_1.gif";
            else
                imgs[i].src = "/images/star_0.gif";

        }
        starSaves.put(id, starSave);
    }
}
var hashtable = {
    hash: {},
    exists: function(key){
       return this.hash.hasOwnProperty(key);
    },
    get: function(key){
        return this.exists(key)?this.hash[key]:null;
    },
    put: function(key, value){
        this.hash[key] = value;
    }
}