提取对象数组的String属性

时间:2014-04-29 14:26:06

标签: javascript arrays

我在数组中有几个对象,如下所示:

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());
}

但有人告诉我,保证订购完好无损。

5 个答案:

答案 0 :(得分:0)

答案 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之前。