js问题:在两层数组内找到对应的对象


在多层数组里面下,已知id131,可以用到什么办法找到name值为小丽的对象?
var listss = [
                        [{
                            id:128,
                            name:"小明",
                        },
                        {
                            id:129,
                            name:"小红",
                        },
                        ],
                        [{
                            id:130,
                            name:"小方",
                        },
                        {
                            id:131,
                            name:"小丽",
                        },
                        ],
                        [{
                            id:132,
                            name:"小林",
                        },
                        {
                            id:133,
                            name:"小雨",
                        },
                        ]
                    ]

方法一:

let target = listss.flat().find(item => {
  return item.id === 131
})
console.log("目标对象为:", target)

方法二:

let target
for (let i = 0; i < listss.length; i++) {
  for (let j = 0; j < listss[i].length; j++) {
    if (listss[i][j].id === 131) {
      target = listss[i][j]
      break;
    }
  }
}
console.log("目标对象为:", target)

参考GPT和自己的思路:可以使用 JavaScript 的嵌套循环以及条件语句来实现。具体的代码如下:

// 定义要查找的id和name
var targetId = 131;
var targetName = "小丽";

// 嵌套循环查找
for (var i = 0; i < listss.length; i++) {
    for (var j = 0; j < listss[i].length; j++) {
        // 找到目标对象
        if (listss[i][j].id === targetId && listss[i][j].name === targetName) {
            console.log("找到了目标对象:", listss[i][j]);
            // 可以在这里执行其他操作,比如将目标对象从数组中删除
            break;
        }
    }
}

以上代码会遍历多层数组中的每一个对象,然后判断它的id和name是否和目标相符。如果找到了目标对象,可以在循环中执行其他操作,比如将该对象从数组中删除。如果没找到目标对象,则循环会继续执行直到遍历完所有对象。