根据属性值创建多个对象数组,然后遍历每个数组

Create multiple arrays of objects based on property value then iterate through each array

本文关键字:数组 然后 遍历 对象 创建 属性      更新时间:2024-03-18

假设我在一个数组中有以下对象:

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"
相关文章: