Javascript 使用array.map()更改数组索引

Javascript 使用array.map()更改数组索引,javascript,arrays,Javascript,Arrays,是否可以使用array.map()在JS中迭代一个数组并修改结果数组的索引值 // I start with this values: var arrSource = [ {id:7, name:"item 1"}, {id:10, name:"item 2"}, {id:19, name:"item 3"}, ]; var arrResult = arrSource.map(function(obj, index) { // What to do here? r

是否可以使用
array.map()
在JS中迭代一个数组并修改结果数组的索引值

// I start with this values:
var arrSource = [
  {id:7, name:"item 1"}, 
  {id:10, name:"item 2"},
  {id:19, name:"item 3"},
];

var arrResult = arrSource.map(function(obj, index) {
    // What to do here?
    return ???; 
});

/*
This is what I want to get as result of the .map() call:

arrResult == [
  7: {id:7, name:"item 1"}, 
  10: {id:10, name:"item 2"},
  19: {id:19, name:"item 3"},
];
*/
否。
Array#map
执行1:1映射(可以这么说)

您必须创建一个新数组,并将元素显式分配给特定索引:

var arrResult = [];
arrSource.forEach(function(value) {
   arrResult[value.id] = value;
});

当然你也可以使用
。reduce

当然你可以这样做

var arrSource=[
{id:7,名称:“项目1”},
{id:10,名称:“项目2”},
{id:19,名称:“项目3”},
];
newArr=arrSource.map((e,i,a)=>a[a.length-1-i]);

console.log(newArr)
Yes,或者
map
然后
sort
@Vld:不确定这两种方法在这里有什么帮助。实际上,你是对的。我误读了这个问题,认为OP想映射然后重新排序。这似乎颠倒了元素的顺序。@Felix Kling是的。。或者根据你的逻辑你喜欢什么顺序。但这不是OP想要做的。OP想要将
arr[0]
分配给
arr[7]
arr[1]
分配给
arr[10]
,等等@Felix Kling,在这个特殊的片段中,我们将
arr[2]
分配给
arr[0]
当然。关键是,您不能通过
.map
为任意索引赋值。您只能分配给已经有值(即存在)的索引。但即使这样,您也无法真正控制将某些内容分配给哪个索引。你必须反过来思考:我想给索引
I
分配什么?由于在您的示例中,索引
7
永远不会被处理,因此无法通过
.map
实现OP想要的功能。