我的javascript代码如下:
<script type="text/javascript">
var clubs = [
{id: 3, name : 'chelsea'},
{id: 6, name : 'city'},
{id: 7, name : 'liverpool'},
{id: 10, name : 'manchester united'},
{id: 16, name : 'arsenal'}
];
console.log(clubs)
</script>
我想将数组的键更改为id
的值例如
{id: 7, name : 'liverpool'},
的键是2
我想将2
更改为7
另一个例子
{id: 16, name : 'arsenal'}
的键是4
它是16
我该怎么做?
更新:
来自俱乐部阵列
{id: 3, name : 'chelsea'}
的索引为0
{id: 6, name : 'city'}
的索引为1
{id: 7, name : 'liverpool'}
的索引为2
{id: 10, name : 'manchester united'}
的索引为3
{id: 16, name : 'arsenal'}
的索引为4
我想将其更改为:
{id: 3, name : 'chelsea'}
的索引为3
{id: 6, name : 'city'}
的索引为6
{id: 7, name : 'liverpool'}
的索引为7
{id: 10, name : 'manchester united'}
的索引为10
{id: 16, name : 'arsenal'}
的索引为16
答案 0 :(得分:3)
使用reduce并创建一个以id为键的对象而不是数组。
var clubs = [
{id: 3, name : 'chelsea'},
{id: 6, name : 'city'},
{id: 7, name : 'liverpool'},
{id: 10, name : 'manchester united'},
{id: 16, name : 'arsenal'}
];
var resData = clubs.reduce((a,x)=>{
a[x.id] = x;
return a;
},{})
console.log(resData)
&#13;
答案 1 :(得分:1)
您可以将id
作为索引并创建稀疏数组。
var clubs = [{ id: 3, name : 'chelsea' }, { id: 6, name : 'city' }, { id: 7, name : 'liverpool' }, { id: 10, name : 'manchester united' }, { id: 16, name : 'arsenal' }];
clubs = clubs.reduce((r, o) => (r[o.id] = o, r), []);
console.log(clubs);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 2 :(得分:1)
使用reduce
之类的length
,但将带有getter的对象作为var clubs = [
{id: 3, name : 'chelsea'},
{id: 6, name : 'city'},
{id: 7, name : 'liverpool'},
{id: 10, name : 'manchester united'},
{id: 16, name : 'arsenal'}
];
var resData = {
get length(){
return Object.getOwnPropertyNames(this).filter(function(i){
return /^\d+$/.test(i)
}).length
}
};
clubs.reduce(function(a,x){
a[x.id] = x;
return a;
},resData);
属性传递。
{{1}}