Javascript 基于属性值创建多个对象数组,然后遍历每个数组

Javascript 基于属性值创建多个对象数组,然后遍历每个数组,javascript,jquery,arrays,object,iterator,Javascript,Jquery,Arrays,Object,Iterator,假设数组中有以下对象: var entities = [ server1: { type: server }, server2: { type: server }, server3: { type: server }, printer1: { type: printer }, printer2: { type: printer }, printer3: { type: printer }, switch1: { type: switch }

假设数组中有以下对象:

var entities = [
    server1: { type: server },
    server2: { type: server },
    server3: { type: server },
    printer1: { type: printer },
    printer2: { type: printer },
    printer3: { type: printer },
    switch1: { type: switch },
    switch2: { type: switch },
    switch3: { type: switch }
]
我怎么能这样做:

typeArray(type) = []
for each type in entities {
    for each entity in entities of type {
        typeArray(type).push(entity)
    }
}
这将导致类似于

typeArray("switch")(0) = switch1
typeArray("server")(2) = server3
typeArray("printer")(1) = printer2
除此之外,我希望能够以编程方式访问所有数组

for each typeArray() {
    var type = ???
    myArrayFunction(typeArray, type);
}
希望我的伪代码有意义…

一个简单的map()将为您处理重新洗牌:

var entities = {
    server1: { type: 'server' },
    server2: { type: 'server' },
    server3: { type: 'server' },
    printer1: { type: 'printer' },
    printer2: { type: 'printer' },
    printer3: { type: 'printer' },
    switch1: { type: 'switch' },
    switch2: { type: 'switch' },
    switch3: { type: 'switch' }
}

var typeArray={};
Object.keys(entities).map(function(a){
  var v=this[a];
 typeArray[v.type]=typeArray[v.type]||[];
 typeArray[v.type].push(a);
},entities);

typeArray /* ==

{
    "server": [
        "server1",
        "server2",
        "server3"
    ],
    "printer": [
        "printer1",
        "printer2",
        "printer3"
    ],
    "switch": [
        "switch1",
        "switch2",
        "switch3"
    ]
}

*/
 // a sanity check for your suggested code seems to work using js syntax:
 typeArray["server"][2] // == "server3"
一个简单的map()将为您处理重新洗牌:

var entities = {
    server1: { type: 'server' },
    server2: { type: 'server' },
    server3: { type: 'server' },
    printer1: { type: 'printer' },
    printer2: { type: 'printer' },
    printer3: { type: 'printer' },
    switch1: { type: 'switch' },
    switch2: { type: 'switch' },
    switch3: { type: 'switch' }
}

var typeArray={};
Object.keys(entities).map(function(a){
  var v=this[a];
 typeArray[v.type]=typeArray[v.type]||[];
 typeArray[v.type].push(a);
},entities);

typeArray /* ==

{
    "server": [
        "server1",
        "server2",
        "server3"
    ],
    "printer": [
        "printer1",
        "printer2",
        "printer3"
    ],
    "switch": [
        "switch1",
        "switch2",
        "switch3"
    ]
}

*/
 // a sanity check for your suggested code seems to work using js syntax:
 typeArray["server"][2] // == "server3"
一个简单的map()将为您处理重新洗牌:

var entities = {
    server1: { type: 'server' },
    server2: { type: 'server' },
    server3: { type: 'server' },
    printer1: { type: 'printer' },
    printer2: { type: 'printer' },
    printer3: { type: 'printer' },
    switch1: { type: 'switch' },
    switch2: { type: 'switch' },
    switch3: { type: 'switch' }
}

var typeArray={};
Object.keys(entities).map(function(a){
  var v=this[a];
 typeArray[v.type]=typeArray[v.type]||[];
 typeArray[v.type].push(a);
},entities);

typeArray /* ==

{
    "server": [
        "server1",
        "server2",
        "server3"
    ],
    "printer": [
        "printer1",
        "printer2",
        "printer3"
    ],
    "switch": [
        "switch1",
        "switch2",
        "switch3"
    ]
}

*/
 // a sanity check for your suggested code seems to work using js syntax:
 typeArray["server"][2] // == "server3"
一个简单的map()将为您处理重新洗牌:

var entities = {
    server1: { type: 'server' },
    server2: { type: 'server' },
    server3: { type: 'server' },
    printer1: { type: 'printer' },
    printer2: { type: 'printer' },
    printer3: { type: 'printer' },
    switch1: { type: 'switch' },
    switch2: { type: 'switch' },
    switch3: { type: 'switch' }
}

var typeArray={};
Object.keys(entities).map(function(a){
  var v=this[a];
 typeArray[v.type]=typeArray[v.type]||[];
 typeArray[v.type].push(a);
},entities);

typeArray /* ==

{
    "server": [
        "server1",
        "server2",
        "server3"
    ],
    "printer": [
        "printer1",
        "printer2",
        "printer3"
    ],
    "switch": [
        "switch1",
        "switch2",
        "switch3"
    ]
}

*/
 // a sanity check for your suggested code seems to work using js syntax:
 typeArray["server"][2] // == "server3"

调试伪代码真的很难。尝试将其转换为JavaScript并让我们知道是否有任何错误。
var entities=[server1:
无效,
[
应该是
{
(不要忘了修复关闭)。调试伪代码非常困难。尝试将其转换为JavaScript并让我们知道是否有任何错误。
var entities=[server1:
无效,
[
应该是
{
(也不要忘记修复关闭)调试伪代码非常困难。尝试将其转换为JavaScript,如果出现任何问题,请告诉我们。
变量实体=[server1:
无效,
[
应该是
{
(也不要忘记修复关闭)调试伪代码真的很难。试着将其转换为JavaScript,并告诉我们是否出现任何错误。
var entities=[server1:
无效,
[
应该是
{
(不要忘了修复关闭)这看起来不错,那么我如何解决第28行的问题:@ScottBeeson:Object.keys(typeArray)将返回一个字符串数组,其中包含最初包含在entities变量中的任何类型的唯一名称。这看起来不错,那么我如何解决第28行的问题:@ScottBeeson:Object.keys(typeArray)将返回一个字符串数组,其中包含最初包含在entities变量中的任何类型的唯一名称。这看起来不错,那么我如何解决第28行的问题:@ScottBeeson:Object.keys(typeArray)将返回entities变量中最初包含的任何类型的唯一名称的字符串数组。这看起来不错,因此我如何解决第28行的问题:@ScottBeeson:Object.keys(typeArray)将返回entities变量中最初包含的任何类型的唯一名称的字符串数组。