我有一个对象数组:
var object = [
{
"id": 1,
"name": "Vehicles"
},
...
我想从每个对象中提取“名称”,并在“名称”数组中对其进行排序,然后显示每个“名称”。
我就是这样做的:
有没有办法同时做两个动作?
答案 0 :(得分:4)
map
和sort
的组合可以解决问题:
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;