我在数组中有几个对象,如下所示:
var objectArray = [
abc: {id: "qq09qed0000", status: "running"},
def: {id: "qq09qed0001", status: "paused"},
...
xyz: {id: "qq09qed9999", status: "paused"}
];
编辑:我不确定,它是如何在内存中表示的,objectArray是通过执行array.push(object)创建的;循环几百次。以上只是一个示例,向您展示对象的外观,它们被截断,实际上有更多的字段。请停止告诉我阵列格式错误,我知道,这只是一个例子。要考虑的主要问题是如何从对象数组转到字符串数组。
Edit2:也许它在内存中看起来像这样:
var objectArray = [
{id: "qq09qed0000", status: "running"},
{id: "qq09qed0001", status: "paused"},
...
{id: "qq09qed9999", status: "paused"}
];
如果我想要一个只有所有这些元素的id(它们是非连续的)的有序数组,那么提取它们的最佳方法是什么?
我尝试过foreach循环,
for(var obj in objectArray ) {
dataArray.push(objectArray[obj].getid());
}
但有人告诉我,保证订购完好无损。
答案 0 :(得分:0)
你可以使用arr.sort()函数
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
答案 1 :(得分:0)
function sortById (a,b)
{
if (a.id < b.id) return -1
if (a.id > b.id) return 1;
return 0;
}
objectArray.sort (sortById);
答案 2 :(得分:0)
您的objectArray
是一个对象,而不是一个数组,因此没有明显/定义的顺序。
元素的顺序取决于它运行的浏览器的JavaScipt实现。
出于这个原因,没有办法“保持订单完整。”,因为首先没有订单排序。
现在你已经编辑了这个问题,objectArray
是无效的JavaScript语法。
数组不能有像这样的键:值对:
var objectArray = [
abc: {id: "qq09qed0000", status: "running"},
根据我从你的问题中收集到的内容,这应该有效:
data = data2.map(function(e){return e.id;});
这应该返回一个只有id
值的数组,其顺序与data2
中的顺序相同。
答案 3 :(得分:0)
如果你先把数组中的所有id都推出来,那么就对它们进行排序,事实上&#39; for&#39;功能不能保持订购不重要
将所有ID推入新数组
var objectArray = {
abc: {id: "qq09qed0000", status: "running"},
def: {id: "qq09qed0001", status: "paused"},
...
xyz: {id: "qq09qed9999", status: "paused"}
};
var idArray = [];
for(var item in objectArray){
idArray.push(item.id);
};
这将生成一个如下所示的数组:
idsArray = ["qq09qed0000","qq09qed0001", ..., "qq09qed9999"]
接下来,使用数组排序方法
对数组进行排序idsArray.sort();
OR
idsArray.sort(function(a,b){
return a - b;
});
默认情况下,它会按字母数字顺序对它们进行排序。您也可以使用以下方式撤销订单:
idsArray.sort(function(a,b){
return b - a;
});
答案 4 :(得分:-1)
Namespace.pluck = function(obj, prop)
{
var isFunction = Namespace.isFunction(prop);
return Namespace.map(obj, function(key, element)
{
return isFunction ? prop(element) : element[prop];
});
};
var ids = Namespace.pluck(objectArray, 'id').sort();
Array.prototype.sort()将为您提供词典排序,而不是自然排序。 10将在1之后但在2之前。