我有Hash obj:
var obj = {a,b,c,...};
obj = $H(obj);
我需要将其转换为简单数组
[a,b,c,..]
我能怎么做?
THX。
答案 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.getValues
和Object.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哈希类的继承函数和私有成员