Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 减少不按预期工作?_Javascript_Arrays - Fatal编程技术网

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字符串化似乎不必要