Javascript 减少不按预期工作?
我当前正在尝试将数组转换为对象,并将数组索引作为所创建对象的属性 示例数组:Javascript 减少不按预期工作?,javascript,arrays,Javascript,Arrays,我当前正在尝试将数组转换为对象,并将数组索引作为所创建对象的属性 示例数组:['a','b','c'] 预期的对象结果:{'1':'a','2':'b','3':'c'} 下面是我的代码,当我使用map方法时,它起作用了,但当我使用reduce方法时,它以一种奇怪的方式出现: 让sampleData=['a','b','c']; 让convertArrToObjWithIndexProp=(arr)=>{ /*设res={}; arr.map((v,k)=>{ res[k+1]=v; }) 返
['a','b','c']
预期的对象结果:{'1':'a','2':'b','3':'c'}
下面是我的代码,当我使用map方法时,它起作用了,但当我使用reduce方法时,它以一种奇怪的方式出现:
让sampleData=['a','b','c'];
让convertArrToObjWithIndexProp=(arr)=>{
/*设res={};
arr.map((v,k)=>{
res[k+1]=v;
})
返回res*/
//-->这将输出{'1':'a','2':'b','3':'c'}
返回arr.reduce((iv,cv,i)=>{
返回Object.assign(iv,iv[i+1]=cv);
},{});
//-->这将输出{0':'c'、'1':'a'、'2':'b'、'3':'c'}
}
log(convertArrToObjWithIndexProp(sampleData))代码>不要使用对象。分配。只需更新对象并将其返回即可
让sampleData=['a','b','c'];
让convertArrToObjWithIndexProp=(arr)=>{
返回arr.reduce((iv,cv,i)=>{
iv[i+1]=cv
回报四
},{});
}
log(convertArrToObjWithIndexProp(sampleData))代码>不要使用对象。分配。只需更新对象并将其返回即可
让sampleData=['a','b','c'];
让convertArrToObjWithIndexProp=(arr)=>{
返回arr.reduce((iv,cv,i)=>{
iv[i+1]=cv
回报四
},{});
}
log(convertArrToObjWithIndexProp(sampleData))
问题在于此表达式的结果:iv[i+1]=cv
是cv
,然后将其对象分配给累加器。您可以通过一个简单的任务使其更简单:
让sampleData=['a','b','c'];
让convertArrToObjWithIndexProp=(arr)=>
arr.reduce((iv,cv,i)=>(iv[i+1]=cv,iv),{});
log(convertArrToObjWithIndexProp(sampleData))
问题在于此表达式的结果:iv[i+1]=cv
是cv
,然后将其对象分配给累加器。您可以通过一个简单的任务使其更简单:
让sampleData=['a','b','c'];
让convertArrToObjWithIndexProp=(arr)=>
arr.reduce((iv,cv,i)=>(iv[i+1]=cv,iv),{});
log(convertArrToObjWithIndexProp(sampleData))代码>您可以通过这样做来实现它
let array = ['a','b','c'];
return array.reduce((acc, currentValue, index) => {
const key= index + 1;
acc[key] = currentValue;
return acc;
}, {});
输出将是这样的
{
"1": "a",
"2": "b",
"3": "c"
}
你可以通过这样做来实现它
let array = ['a','b','c'];
return array.reduce((acc, currentValue, index) => {
const key= index + 1;
acc[key] = currentValue;
return acc;
}, {});
输出将是这样的
{
"1": "a",
"2": "b",
"3": "c"
}
var-arr=['a','b','c'];
var结果=arr.REDUCT((对象、val、索引)=>{
obj[index+1]=val;
返回obj;
}, {});
控制台日志(结果)代码>
var-arr=['a','b','c'];
var结果=arr.REDUCT((对象、val、索引)=>{
obj[index+1]=val;
返回obj;
}, {});
控制台日志(结果)代码>我会使用数组。reduce
函数和对象计算属性
var sampleData=['a','b','c'];
log(sampleData.reduce((mem,curr,index)=>({…mem,
[索引+1]:当前
}),{}))
我会使用数组。reduce
函数和对象计算属性
var sampleData=['a','b','c'];
log(sampleData.reduce((mem,curr,index)=>({…mem,
[索引+1]:当前
})(,{}))
Object.assign(iv,{[i+1]:cv})代码>应该可以工作。我不知道你的代码目前在做什么,但是看起来很奇怪。如果你有一个对象数组,并且你需要复制每个对象,那么正确的Object.assign
语法应该是:return arr.reduce((iv,cv,I)=>Object.assign({},iv,{[I]:cv}),{})代码>Object.assign(iv,{[i+1]:cv})代码>应该可以工作。我不知道你的代码目前在做什么,但是看起来很奇怪。如果你有一个对象数组,并且你需要复制每个对象,那么正确的Object.assign
语法应该是:return arr.reduce((iv,cv,I)=>Object.assign({},iv,{[I]:cv}),{})代码>JSON字符串化似乎不必要JSON字符串化似乎不必要