以下两个不同的代码片段似乎与我相同:
var myArray = Array();
myArray['A'] = "Athens";
myArray['B'] = "Berlin";
Run Code Online (Sandbox Code Playgroud)
和
var myObject = {'A': 'Athens', 'B':'Berlin'};
Run Code Online (Sandbox Code Playgroud)
因为它们的行为都相同,而且typeof(myArray) == typeof(myObjects)(都产生'对象').
这些变体之间有什么区别吗?
我有一个对象;
{ '6': { stream: { twitch: [Object] } },
'7': { stream: { twitch: [Object] } },
'8': { stream: { twitch: [Object] } },
'9': { stream: { twitch: [Object] } },
'10': { stream: { twitch: [Object] } },
'11': { stream: { twitch: [Object] } } }
Run Code Online (Sandbox Code Playgroud)
我想迭代它;
return Promise.map(myObj, function(minute, minuteIndex) {
Run Code Online (Sandbox Code Playgroud)
所以基本上 minute 应该保存数据,而 minuteIndex 应该保存索引。
我可以用 lodash 做到这一点,但 bluebird 不能以某种方式。
_.forEach(hour.minutes, function(minute, minuteIndex) {
Run Code Online (Sandbox Code Playgroud)
我知道此代码以前可以使用,但现在无法使用。
有任何想法吗?
我最近刚刚学习 JS,并一直致力于一项练习,将人们从一系列记录中分类ancestry为他们生活的世纪和年龄。以下是来自 的示例元素ancestry:
{
name: "Carolus Haverbeke"
sex: "m"
born: 1832
died: 1905
father: "Carel Haverbeke"
mother: "Maria van Brussel"
}
Run Code Online (Sandbox Code Playgroud)
这是我的尝试:
ancestry.forEach(function(person) {
var ages = {};
var century = Math.ceil(person.died / 100);
if (century in ages)
ages[century].push(person.died - person.born);
else
ages[century] = person.died - person.born;
});
Run Code Online (Sandbox Code Playgroud)
这是我试图存储的通用格式ages,它将每个世纪映射到人们的年龄数组:
{
16: [24, 51, 16]
17: [73, 22]
18: [54, 65, 28]
}
Run Code Online (Sandbox Code Playgroud)
我真的很困惑,因为这段代码只将第一个人保存ancestry到ages. 我认为这可能是因为我ages在 内部定义的forEach,但是当我移到var …