[英]From an array of objects, extract one property and build a string with them
[英]Extract String property of an array of objects
我在数组中有几个对象,如下所示:
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());
}
但是我被告知这不保证顺序不变。
function sortById (a,b)
{
if (a.id < b.id) return -1
if (a.id > b.id) return 1;
return 0;
}
objectArray.sort (sortById);
您的objectArray
是一个对象,而不是数组,因此没有明显的/定义的顺序。
元素的顺序取决于运行它的浏览器的JavaScipt实现。
因此,无法“保持订购完好无损”。 ,因为首先没有设置顺序。
既然您已经编辑了问题,那么objectArray
不是有效的JavaScript语法。
数组不能有如下的key:value对:
var objectArray = [
abc: {id: "qq09qed0000", status: "running"},
从我从您的问题中收集的信息来看,这应该有效:
data = data2.map(function(e){return e.id;});
这应该返回一个只有id
值的数组,其顺序与data2
中的顺序相同。
如果先将所有id推入数组中,然后再对它们进行排序,则'for'函数不能保持排序的事实无关紧要
将所有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();
要么
idsArray.sort(function(a,b){
return a - b;
});
默认情况下,这将按字母数字顺序对其进行排序。 您还可以使用以下顺序撤销订单:
idsArray.sort(function(a,b){
return b - a;
});
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之前
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.