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_Loops_Object - Fatal编程技术网

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的键/值对,然后可以将其用于数组中的下一个字符?