我的应用程序创建了一个JavaScript对象,如下所示:
myObj= {1:[Array-Data], 2:[Array-Data]}
但我需要这个对象作为数组。
array[1]:[Array-Data]
array[2]:[Array-Data]
因此,我尝试通过$迭代将该对象转换为数组。遍历对象并将元素添加到数组:
x=[]
$.each(myObj, function(i,n) {
x.push(n);});
是否有更好的方法将对象转换为数组或函数?
我的应用程序创建了一个JavaScript对象,如下所示:
myObj= {1:[Array-Data], 2:[Array-Data]}
但我需要这个对象作为数组。
array[1]:[Array-Data]
array[2]:[Array-Data]
因此,我尝试通过$迭代将该对象转换为数组。遍历对象并将元素添加到数组:
x=[]
$.each(myObj, function(i,n) {
x.push(n);});
是否有更好的方法将对象转换为数组或函数?
当前回答
x = [];
for( var i in myObj ) {
x[i] = myObj[i];
}
其他回答
ECMASCRIPT 5:
Object.keys(myObj).map(function(x) { return myObj[x]; })
2015年或ES6:
Object.keys(myObj).map(x => myObj[x])
我认为你可以使用for,但检查是否财产不是继承的
myObj= {1:[Array-Data], 2:[Array-Data]}
var arr =[];
for( var i in myObj ) {
if (myObj.hasOwnProperty(i)){
arr.push(myObj[i]);
}
}
编辑-如果你想要,你也可以保留对象的索引,但你必须检查它们是否为数字(并且你会得到未定义的缺失索引值:
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
myObj= {1:[1,2], 2:[3,4]}
var arr =[];
for( var i in myObj ) {
if (myObj.hasOwnProperty(i)){
if (isNumber(i)){
arr[i] = myObj[i];
}else{
arr.push(myObj[i]);
}
}
}
因为ES5 object .keys()返回一个数组,其中包含直接在对象上定义的属性(不包括在原型链中定义的属性):
Object.keys(yourObject).map(function(key){ return yourObject[key] });
ES6在箭头函数方面更进一步:
Object.keys(yourObject).map(key => yourObject[key]);
x = [];
for( var i in myObj ) {
x[i] = myObj[i];
}
那么jquery。makearray (obj)呢?
这是我在应用程序中做的。