相关疑难解决方法(0)

为什么我可以将命名属性添加到数组中,就像它是一个对象一样?

以下两个不同的代码片段似乎与我相同:

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)(都产生'对象').

这些变体之间有什么区别吗?

javascript arrays object javascript-objects

103
推荐指数
5
解决办法
7万
查看次数

Promise.map over 对象

我有一个对象;

{ '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)

我知道此代码以前可以使用,但现在无法使用。

有任何想法吗?

node.js bluebird

4
推荐指数
1
解决办法
2万
查看次数

推送到对象内的数组

我最近刚刚学习 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)

我真的很困惑,因为这段代码只将第一个人保存ancestryages. 我认为这可能是因为我ages在 内部定义的forEach,但是当我移到var …

javascript

2
推荐指数
1
解决办法
1万
查看次数