我有一个包含项目的数组,我想根据第一个字母对它们进行分组,但是当我将项目推送到数组时,它显示为空"数组[0]"虽然里面有明显的物品。
显然我做错了什么,但我不知道是什么。
var group = [];
var alphabetArray = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
alphabetArray.forEach(function(letter) {
group[letter] = group[letter] || [];
group[letter].push({
key: letter,
letter
});
});
console.log(group);

答案 0 :(得分:2)
数组用于保存由属性名称<整数表示的有序数据集。
您正在指定字母的属性名称。
数组不是为了保存那种数据而设计的,console.log
不会显示数组的这些属性。
不要使用数组。使用对象。对象旨在保存具有任意属性名称的无序数据。如果订单很重要,那么您可能希望改为使用Map。
答案 1 :(得分:1)
您正在寻找创建对象而不是数组。将[]更改为{}
Array期望int作为索引,该对象可以采用字符串
var group = {}; // Object instead of Array
var alphabetArray = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
alphabetArray.forEach(function(letter) {
group[letter] = group[letter] || [];
group[letter].push({
key: letter,
letter
});
});
console.log(group);
答案 2 :(得分:0)
我想你想把每个字母转换成结构。我是这样,你需要Array.map
:
var alphabetArray = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
var group = alphabetArray.map(function(letter) {
return {
[letter]: letter
};
});
console.log(group);
&#13;