通过减少将键数组作为obj的属性添加到obj?

时间:2019-06-20 06:01:04

标签: javascript

我有一些键数组,我想通过reduce将这样的键添加为空对象的计算值(不包括代码)作为属性:

const f = ['a','b','c'].reduce((obj,key) => obj[key]='', {})

我期望obj是累加器{},所以我以这种方式添加了属性?我如何通过减少这项工作?

我期望并希望该代码的结果如下:

{ a:'',  b:'', c:'' }

但是我的代码仅在控制台上导致空字符串。我该如何实现?

1 个答案:

答案 0 :(得分:4)

reduce回调返回的值将是下一次迭代的累加器。因此,在您的代码中, select substring(drug_id,1,CHARINDEX('-',drug_id)) + convert(varchar,cast(substring(drug_id,CHARINDEX('-',drug_id)+1,len(drug_id)) as int)) id from tbl_Receiving order by cast(substring(drug_id,CHARINDEX('-',drug_id)+1,len(drug_id)) as int) 仅引用第一次迭代中的对象-在下一次迭代中,它引用obj解析为的对象,即空字符串。

改为返回对象:

obj[key] = ''

如果需要,可以改用const f = ['a', 'b', 'c'].reduce((obj, key) => { obj[key] = ''; return obj; }, {}); console.log(f);(尽管它是非常新的,所以为了获得良好的跨浏览器支持,请添加一个polyfill)

Object.fromEntries