Mootools将Hash转换为数组

时间:2011-03-02 23:08:21

标签: javascript arrays hash mootools

我有Hash obj:


var obj = {a,b,c,...};
obj = $H(obj);
我需要将其转换为简单数组

[a,b,c,..]
我能怎么做? THX。

3 个答案:

答案 0 :(得分:2)

因为你使用$ H我假设mootools 1.2.x更旧,因为它在1.3中被弃用而不支持新的Object。构造

哈希有一个.each方法:

var Hobj = $H({
    tool: "bar",
    ghost: "goblin"
});

var arr = [];

Hobj.each(function(value, key) {
    arr.push(value); // what to do with key?
});

console.log(arr);

使用键而不是数组键来抓取整个对象的替代方法:

Hobj.each(function(value, key) {
    var obj = {};
    obj[key] = value;
    arr.push(obj);
});

答案 1 :(得分:2)

Object.getValues(myObject)获取所有值的数组。

Object.getKeys(myObject)获取密钥数组。

对于1.2,Hash提供了相同的方法。

并且使用Objects {}来存储您的示例中的列表。 Arrays用于列表,Objects用于关联数组

修改
由于版本1.3 Object.getValuesObject.getKeys已被弃用,并由Object.keys resp Object.values取代。

答案 2 :(得分:0)

假设你想要数组中的值:

var arr = [];
for(var prop in obj){
    if(obj.hasOwnProperty(prop)){
        arr.push(obj[prop]);
    }
}

如果您希望属性名称在数组中:

var arr = [];
for(var prop in obj){
    if(obj.hasOwnProperty(prop)){
        arr.push(prop);
    }
}

hasOwnProperty调用很重要,因为它会过滤掉你在结果数组中不想要的mooTools哈希类的继承函数和私有成员