mar*_*rix -2 javascript arrays sorting object
假设我有这样奇怪的代码:
var weirdo = {};
var ids = [10, 30, 11, 1, 4, 2];
var producers = ['Ford','Rover','BMW','Fiat','Renault','Mitsubishi'];
var n = producers.length;
for(var i=0; i<n; i++) {
weirdo[ids[i]] = producers[i];
}
// unknown code ???
Run Code Online (Sandbox Code Playgroud)
如何按值对怪物进行排序?它不是数组而不是,我不能在填充怪人之前对生产者进行排序.
有任何想法吗?
哦,关系id <=>制作人是非常重要的!
您可以使用对象数组:
var items = [
{id:10, producer:'Ford'},
{id:30, producer:'Rover'},
{id:11, producer:'BMW'},
{id:1, producer:'Fiat'},
{id:4, producer:'Renault'},
{id:2, producer:'Mitsubishi'},
]
// or, starting from your two arrays:
var items = [];
for (var i=0; i<ids.length && i<producers.length; i++)
items[i] = {id:ids[i], producer:producers[i]};
Run Code Online (Sandbox Code Playgroud)
items.sort(function(a, b){ return a.id-b.id; });
Run Code Online (Sandbox Code Playgroud)
...并使用for循环迭代它.
另一个解决方案是迭代器数组,以weirdo正确的顺序循环id < - > producer对象():
var weirdo = {"10":"Ford","30":"Rover",...};
var ids = Object.keys(weirdo); // if not already built somewhere
ids.sort(function(a,b){return a-b;}); // sort numeric
// loop:
for (var i=0; i<ids.length; i++) {
var id=ids[i], producer=weirdo[id];
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |