【发布时间】:2015-04-11 00:17:54
【问题描述】:
我写了一个函数来满足以下条件:
“编写一个函数,给定一个字符串,生成所有字符索引的映射。例如, index("Mississippi") 应返回将“M”与集合 {0}、“i”与集合 {1、4、7、10} 相关联的地图,以及 等等。”
但是为什么i1在我的实现中的第一个值,从而切断了M?
var s = 'Mississippi';
function indexes(s) {
var acc = {};
return s.split('').reduce(function(p, c, i) {
if (!acc[c]) {
acc[c] = [i];
} else {
acc[c].push(i);
}
return acc
});
}
console.log(indexes(s)); // Object {i: Array[4], s: Array[4], p: Array[2]}
【问题讨论】:
-
developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
M卡在previousValue参数中 -
i = 1因为:“第一次调用回调时,previousValue 和 currentValue 可以是两个值之一。如果在调用 reduce 时提供了 initialValue,那么 previousValue 将等于 initialValue currentValue 将等于数组中的第一个值。如果没有提供 initialValue,则 previousValue 将等于数组中的第一个值,currentValue 将等于第二个。"跨度>
标签: javascript reduce