Javascript 需要遍历数组以获得要添加到空对象的特定键:值对
对于这个问题,函数接受字符串数组并返回一个对象。键应该是字符串中的字符数,值应该是具有该数量字符的字符串出现的次数 我以为我要去某个地方,然后我被卡住了。我非常感谢你的帮助,我已经尝试过无数种不同的方式在谷歌上搜索,但是没有成功。谢谢大家! 结果应该是这样的:characterCount['apple','berry','cherry']/{5:2,6:1}Javascript 需要遍历数组以获得要添加到空对象的特定键:值对,javascript,arrays,object,Javascript,Arrays,Object,对于这个问题,函数接受字符串数组并返回一个对象。键应该是字符串中的字符数,值应该是具有该数量字符的字符串出现的次数 我以为我要去某个地方,然后我被卡住了。我非常感谢你的帮助,我已经尝试过无数种不同的方式在谷歌上搜索,但是没有成功。谢谢大家! 结果应该是这样的:characterCount['apple','berry','cherry']/{5:2,6:1} function characterCount(arr){ var newObj = {}; var valueMax = 0;
function characterCount(arr){
var newObj = {};
var valueMax = 0;
var currentValue = 0;
for(var i=0; i < arr.length; i++){
var key = arr[i].length;
for(var z=0; z < arr.length; z++){
if (arr[z].length === arr[i].length){
currentValue ++;
if (currentValue > valueMax){
valueMax = currentValue;
}
}
}
newObj.key = "valueMax";
}
return newObj;
}
您可以只使用数组来完成输出
函数字符计数数组{
return array.reduce agg,cur=>{
//获取当前项的长度
const len=当前长度;
//将键索引的值增加为1如果不存在,则从0开始
agg[len]=agg[len]| | 0+1;
//返回迭代的下一个值
返回agg;
}, {};
}
console.log characterCount['apple','berry','cherry'] 您可以只使用数组来完成输出
函数字符计数数组{
return array.reduce agg,cur=>{
//获取当前项的长度
const len=当前长度;
//将键索引的值增加为1如果不存在,则从0开始
agg[len]=agg[len]| | 0+1;
//返回迭代的下一个值
返回agg;
}, {};
}
console.log characterCount['apple','berry','cherry'] 看看Array.prototype.reduce函数。这允许您获取一个数组,对每个值进行迭代,并返回一个新的缩减值
函数特征CountArr{
返回arr.reducecounts,str=>{
…很重要,
[str.length]:计数[str.length]| | 0+1
}, {};
}
常量计数=字符计数['apple'、'berry'、'cheery'];
控制台。日志计数 看看Array.prototype.reduce函数。这允许您获取一个数组,对每个值进行迭代,并返回一个新的缩减值
函数特征CountArr{
返回arr.reducecounts,str=>{
…很重要,
[str.length]:计数[str.length]| | 0+1
}, {};
}
常量计数=字符计数['apple'、'berry'、'cheery'];
控制台。日志计数 使用reduce可以说更好,但这里有一个更直接的方法 函数特征CountArr{ const countByLength={}; 对于arr的let项目{ countByLength[item.length]=countByLength[item.length]| | 0+1; } 返回countByLength; }
console.logcharacterCount['apple','berry','cherry'] 使用reduce可以说更好,但这里有一个更直接的方法 函数特征CountArr{ const countByLength={}; 对于arr的let项目{ countByLength[item.length]=countByLength[item.length]| | 0+1; } 返回countByLength; }
console.logcharacterCount['apple','berry','cherry'];对于一个JS学生来说,基于任务的ES6+有点极端,但它看起来确实很酷。非常感谢!我得进一步研究这个方法@user1514042-同意,这可能超出了他们目前的理解,但这是IMO的最佳解决方案。这是一个单行程序,但不是最佳的,因为您反复复制计数数组,所以它实际上取决于所使用的不同字长there@Icepickle,你说得对。与嵌套for循环相比,更优化的术语可能更好。我已经使用Object.assign添加了一个替代答案,这缓解了复制问题。对于JS学生来说,这是一个基于任务的极端ES6+,但看起来确实很酷。非常感谢!我得进一步研究这个方法@user1514042-同意,这可能超出了他们目前的理解,但这是IMO的最佳解决方案。这是一个单行程序,但不是最佳的,因为您反复复制计数数组,所以它实际上取决于所使用的不同字长there@Icepickle,你说得对。与嵌套for循环相比,更优化的术语可能更好。我已经使用Object.assign添加了一个替代答案,它缓解了复制问题。