Javascript 减少数组以更改内容
如何使用array.reduce更改数组内容的显示方式。我不想对内容做任何数学运算 原始阵列:Javascript 减少数组以更改内容,javascript,arrays,ecmascript-6,array-reduce,Javascript,Arrays,Ecmascript 6,Array Reduce,如何使用array.reduce更改数组内容的显示方式。我不想对内容做任何数学运算 原始阵列: var myArray = [ {id:1, name:'name01', value:11}, {id:2, name:'name02', value:22}, {id:3, name:'name03', value:33}, {id:4, name:'name04', value:44}, {id:5, name:'name05', value:55} ]
var myArray = [
{id:1, name:'name01', value:11},
{id:2, name:'name02', value:22},
{id:3, name:'name03', value:33},
{id:4, name:'name04', value:44},
{id:5, name:'name05', value:55}
]
我希望将其更改为:
[
{1:{id:1, name:'name01', value:11}},
{2:{id:2, name:'name02', value:22}},
{3:{id:3, name:'name03', value:33}},
{4:{id:4, name:'name04', value:44}},
{5:{id:5, name:'name05', value:55}}
]
因此,id作为键和值从对象中弹出,它是整个对象
仅使用array.reduce而不使用任何for循环或groupBy可以实现这一点吗?您最好使用,因为数组中的每个项都需要一个新对象
var数组=[{id:1,name:'name01',value:11},{id:2,name:'name02',value:22},{id:3,name:'name03',value:33},{id:4,name:'name04',value:44},{id:5,name:'name05',value:55}],
结果=array.mapa=>{[a.id]:a};
console.logresult;
.as控制台包装{max height:100%!important;top:0;}您可以使用.map代替ES6计算属性名,如下所示:
var myArray=[
{id:1,名称:'name01',值:11},
{id:2,name:'name02',value:22},
{id:3,name:'name03',value:33},
{id:4,name:'name04',value:44},
{id:5,名称:'name05',值:55}
];
var result=myArray.mapelem=>{[elem.id]:elem};
console.logresult
var myArray=[
{id:1,名称:'name01',值:11},
{id:2,name:'name02',value:22},
{id:3,name:'name03',value:33},
{id:4,name:'name04',value:44},
{id:5,名称:'name05',值:55}
];
让result=myArray.mapx=>{[x.id]:x};
console.logresult您没有减少任何内容,因此尝试array.reduce也没有意义 您可以使用array.map并非常轻松地执行此操作 var myArray=[ {id:1,名称:'name01',值:11}, {id:2,name:'name02',value:22}, {id:3,name:'name03',value:33}, {id:4,name:'name04',value:44}, {id:5,名称:'name05',值:55} ] var newArray=myArray.mapfunctionval{return{[val.id]:val};
console.lognewArray;拥有一堆对象是不寻常的,每个对象都有一个唯一的键。你确定这就是你需要的?你可以这么做,但为什么?myArray[0]。名称变为myArray[0]。1.name,呃。我仍然不喜欢它,但使用react-redux更容易分派操作。从那以后,我一直坚持使用这种语法。我正在学习array.reduce并试图找到复杂的示例/答案,以便更好地理解它。如果您能为我指出JS/Mozilla官方版本以外的内容,我将不胜感激。谢谢。这回答了我的好奇心。。我一直在想怎么做。。甚至无法形成蓝图。。谢谢这是最接近于使用reduce的地方。@Somename我添加了ES5语法,以便您可以更清楚地看到发生了什么。ES6版本简洁明了,但如果您仍在学习,则可能有点难以理解正在发生的事情。老实说,即使是一个训练有素的人,ES5语法也更容易查看,并且直观地知道ES5语法的运行情况。。一个问题。为什么id在弹出时显示为带引号的字符串。这是一个数字。@Somename它取决于您使用的控制台。有些人用绳子吐出来,有些人不吐。除非以JSON格式显式输出,否则没有标准确定如何输出对象。输出时,无效的属性名(即包含破折号、空格等)将始终包装为字符串,但有效的属性名可能不会。我相信它们以字符串属性名的形式存储在对象内部,但可能需要有人检查一下。i、 e.Object.keysobj将始终为您提供字符串或符号数组-任何其他类型的对象键始终为字符串。谢谢。然而,这是纯粹的地图。我在找一些有降价的东西。当然不会在prod中使用。但是我很好奇知道它。不知道你为什么不赞成使用concat。在功能范式中,纯度和非破坏性方法总是首选。@mhodges,不,一点也不,但在这种特殊情况下,地图是首选工具。@NinaScholz,是的,我同意。