Javascript 获取数组中对象的所有索引-从对象中的数组

Javascript 获取数组中对象的所有索引-从对象中的数组,javascript,arrays,loops,object,Javascript,Arrays,Loops,Object,我正在努力处理一个数组中的一个对象,该对象存储在一个数组中,我希望从中返回所有标记 生成对象的函数如下所示: const addArray = function(a, b) { const object = { name: a, rooms: b }; testArray.push(object); }; const device = { name: "TV", rooms: [&quo

我正在努力处理一个数组中的一个对象,该对象存储在一个数组中,我希望从中返回所有标记

生成对象的函数如下所示:

const addArray = function(a, b) {
    const object = {
        name: a,
        rooms: b
    };
    testArray.push(object);
};
const device = {
        name: "TV",
        rooms: ["Living Room", "Bedroom"]
    };
我想要实现的是循环遍历“testArray”,并返回数组房间包含“Office”的对象的每个索引

我已经尝试过使用这样的函数,但似乎无法获得对象中数组的正确语法:

function getAllIndexes(arr, val) {
    var indexes = [], i = -1;
    while ((i = arr.rooms.indexOf(val, i+1)) != -1){
        indexes.push(i);
    }
    return indexes;
};
提前谢谢

编辑: 数据的其他信息:

填充了数据的对象如下所示:

const addArray = function(a, b) {
    const object = {
        name: a,
        rooms: b
    };
    testArray.push(object);
};
const device = {
        name: "TV",
        rooms: ["Living Room", "Bedroom"]
    };

生成这样的对象后,我将它们推送到只包含这些对象的数组中(请参见
函数addArray

您可以使用
数组.flatMap()
将匹配
val
的数组中的每个值映射到它的索引,其余值映射到空数组中,空数组将被flatMap删除:

const getAllIndexes=(arr,val)=>arr.flatMap((v,i)=>v==val?i:[])
常量arr=[1,2,3,1,2,1,1,2]
常量结果=GetAllIndex(arr,1)

console.log(结果)
尝试使用Array.prototype.map和Array.prototype.filter

function getAllIndexes(arr, val) {
    return arr.map(i=> {
        let room = i.rooms;
        return room.indexOf(val);
    }).filter(a=>{
        a != -1;
    });
};


如果找到想要的值,您可以从设备中分解
房间
,并获取索引

const
    room = 'Office',
    indices = array.flatMap(({ rooms }, i) => rooms.includes(room) ? i : []);


上面的代码以我的黑客攻击为特色。

请添加你正在谈论的数组和它想要的结果。它看起来像Hi的副本,谢谢你的回答!如果我运行您提供的代码,它工作正常,但是一旦我用我的数组替换您的数组,我就不会得到任何返回的索引。澄清:数组包含对象->对象包含名称和数组->我想在最后一个数组中查找索引。我能提供哪些有帮助的其他信息?谢谢大家!@Midoxx,请将您的数据添加到问题中。输入数据的示例和预期结果。我添加了更多有问题的信息-如果您需要更多信息,请告诉我!预期的结果是索引的平面数组?