Javascript通过数组映射以生成另一个对象数组
我想遍历一个字符串数组,根据字符串是什么,生成一个对象数组 例如,如果阵列为:Javascript通过数组映射以生成另一个对象数组,javascript,arrays,loops,object,Javascript,Arrays,Loops,Object,我想遍历一个字符串数组,根据字符串是什么,生成一个对象数组 例如,如果阵列为: [a,a,a,b,b,c,d] 我想通过数组进行映射,并创建一个具有键和值对的对象,这些键和值对连续添加字符串: [{a:1},{a:2},{a:3},{b:1},{b:2},{c:1},{d:1}] 我该怎么做 我已经尝试过映射,但是我无法获得如何添加到上一个对象的值(a:1->a:2)映射时,您需要单独存储每个项出现的次数计数,并在每次迭代中增加相应的键。为此,您可以使用映射: const input=['
[a,a,a,b,b,c,d]
我想通过数组进行映射,并创建一个具有键和值对的对象,这些键和值对连续添加字符串:
[{a:1},{a:2},{a:3},{b:1},{b:2},{c:1},{d:1}]
我该怎么做
我已经尝试过映射,但是我无法获得如何添加到上一个对象的值(a:1->a:2)映射时,您需要单独存储每个项出现的次数计数,并在每次迭代中增加相应的键。为此,您可以使用
映射
:
const input=['a','a','a','b','b','c','d'];
常量映射=新映射();
console.log(
input.map(char=>{
常量计数=(map.get(char)| | 0)+1;
map.set(char,count);
返回{[char]:count};
})
)
映射时,需要单独存储每个项出现的次数计数,并在每次迭代中增加相应的键。为此,您可以使用映射
:
const input=['a','a','a','b','b','c','d'];
常量映射=新映射();
console.log(
input.map(char=>{
常量计数=(map.get(char)| | 0)+1;
map.set(char,count);
返回{[char]:count};
})
)
ahh,这很有道理。谢谢不管怎样,你能帮我理解map.get(char | | 0)是如何工作的吗?@DiegoFlores注意到结束参数的位置-它是map.get(char)| | 0
,这意味着获取该字符的定义值,或者如果该值未定义(或其他“错误”),则将其替换为实零,这样后续的+1
就可以工作了undefined+1
是不合法的。@DiegoFlores映射开始时是空的。第一次遇到键时(如第一次迭代中的a
)map.get(char)
将返回undefined
,这不是一个可以添加的数字。因此,map.get(char)| 0
是一种快速获取表达式的方法,如果map
中还不存在键,则表达式的计算结果为0。如果键确实存在于映射中
,则表达式将求值为该(数字)计数。啊,我明白了!然后map.set更新map的键/值对,然后可以将其用于数组中的下一个字符?啊,这很有意义。谢谢不管怎样,你能帮我理解map.get(char | | 0)是如何工作的吗?@DiegoFlores注意到结束参数的位置-它是map.get(char)| | 0
,这意味着获取该字符的定义值,或者如果该值未定义(或其他“错误”),则将其替换为实零,这样后续的+1
就可以工作了undefined+1
是不合法的。@DiegoFlores映射开始时是空的。第一次遇到键时(如第一次迭代中的a
)map.get(char)
将返回undefined
,这不是一个可以添加的数字。因此,map.get(char)| 0
是一种快速获取表达式的方法,如果map
中还不存在键,则表达式的计算结果为0。如果键确实存在于映射中
,则表达式将求值为该(数字)计数。啊,我明白了!然后map.set更新map的键/值对,然后可以将其用于数组中的下一个字符?