从对象数组中提取数据并按字母顺序排序(同时)

时间:2016-11-09 15:06:14

标签: javascript jquery arrays object

我有一个对象数组:

var object = [
    {
        "id": 1,
        "name": "Vehicles"
    },
    ...

我想从每个对象中提取“名称”,并在“名称”数组中对其进行排序,然后显示每个“名称”。

我就是这样做的:

  • 我循环遍历每个对象并获取“名称”并将其推入数组中。
  • 然后,我遍历数组并将每个“名称”显示到我所在的位置 想。

JSFIDDLE DEMO

有没有办法同时做两个动作?

2 个答案:

答案 0 :(得分:4)

mapsort的组合可以解决问题:

var items = [{
  "id": 1,
  "name": "Vehicles"
}, {
  "id": 2,
  "name": "Lizards"
}];

var names = items.map(function(item) {
  return item.name;
}).sort();

console.log(names); // ["Lizards", "Vehicles"]

另请注意,您使用的数据不是JSON,它只是一个JavaScript对象数组。

答案 1 :(得分:4)

由于您已经对值进行排序和追加,问题是如何摆脱其中一个循环,而不是迭代两次。

你可以映射和排序,只需加入数组就可以摆脱最后一个循环并一次性追加所有内容



$(document).ready(function() {
    $('.lol').append(object.map(x => x.name).sort().join('<br />'));
});

var object = [{
    "id": 1,
    "name": "Vehicles"
}, {
    "id": 2,
    "name": "Mobiles & Tablets"
}, {
    "id": 3,
    "name": "Electronics & Appliances"
}, {
    "id": 4,
    "name": "Real Estate"
}, {
    "id": 5,
    "name": "Home & Lifestyle"
}, {
    "id": 6,
    "name": "Jobs"
}, {
    "id": 7,
    "name": "Services"
}, {
    "id": 8,
    "name": "Education & Training"
}, {
    "id": 9,
    "name": "Entertainment"
}, {
    "id": 10,
    "name": "Pet & Pet Care"
}, {
    "id": 11,
    "name": "Community"
}, {
    "id": 12,
    "name": "Events"
}, {
    "id": 13,
    "name": "Matrimonial"
}];
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="lol"></p>
&#13;
&#13;
&#13;