【发布时间】:2016-02-06 10:56:34
【问题描述】:
我有一个包含对象的数组,每个对象都包含一个名为 name 的属性。
现在我想要第二个数组,其中包含第一个数组中每个名称属性的第一个字母。如果第一个字母尚不存在,则应将其保存在名为 header 的属性中。
我只想让一个字母出现一次,因为这个脚本旨在用于一个字母标题列表,每个标题都包含一个以相同字母开头的名称列表。
我创建了一个使用内置 JavaScript“过滤器”方法的函数,该方法应该检查带有第一个字母的值是否已经存在。但由于某种原因,它不起作用。无论我提供什么字母,过滤器总是返回一个空数组。
我一直在试图弄清楚为什么我的脚本没有成功。我非常感谢任何帮助!
var fruit = [{title:"Apple"},{title:"Avocado"},{title:"Banana"},{title:"Cucumber"}];
var sections = [];
function createAlphabetSections(array) {
for(var i = 0; i < array.length; i++){
var firstLetter = array[i].title.charAt(0).toUpperCase();
var section = sections.filter(function (section) { return section.header === firstLetter;});
if(sections.length === 0){
sections.push([{header: firstLetter}]);
} else if (section.length > 0){
sections.push([{header: firstLetter}]);
}
}
}
createAlphabetSections(fruit);
【问题讨论】:
-
请提供预期函数输出的示例。
-
该函数应该返回一个对象数组。每个对象都应该有一个名为 header 的属性,它具有分配给它的第一个数组中每个 title 属性的第一个字母。应删除重复项:
[Object { headerTitle="A"}, Object { headerTitle="B"}, Object { headerTitle="C"}]
标签: javascript arrays object filter