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,请将您的数据添加到问题中。输入数据的示例和预期结果。我添加了更多有问题的信息-如果您需要更多信息,请告诉我!预期的结果是索引的平面数组?