如何更改 javascript 上具有 id 值的数组键?
How can I change key of array with value of id on the javascript?
我的 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>
我想把数组的key改成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
您可以将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; }
使用 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)
像 一样使用 reduce
,但传递带有 getter 的对象作为 length
属性.
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);
我的 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>
我想把数组的key改成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
您可以将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; }
使用 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)
像 reduce
,但传递带有 getter 的对象作为 length
属性.
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);