我有一个二维数组,它又有一个带有额外数组的对象.

我想过滤数组并返回一个具有与对象条件匹配的索引的新array.

例如:

一个数组:GP[0][0].pts = [10,5,40,30,95,5,11,85]; 我想搜索数组并返回大于或等于20的值. 这将是[40,30,95,85];

我希望新数组返回这些数组的索引,因此在这种情况下它是[2,3,4,7]

下面的代码返回正确的数字,但我想要索引.

提前感谢.

const gp = [
  [{
    "pts": [10, 5, 40, 30, 95, 5, 11, 85]
  }, {
    "pts": [2, 1, 4]
  }, {
    "pts": [14, 22, 41, 23]
  }]
];


for (let n = 0; n <= 2; n++) {
  const race = gp[0][n].pts.filter(v => +v >= 20).map(Number);
  if (race.length) {
    console.log(`race at n=${n}: ${race}`);
  };
};

推荐答案

这是基于Array.forEach()Array.reduce()的另一个解决方案:

const gp = [
  [{
    "pts": [10, 5, 40, 30, 95, 5, 11, 85]
  }, {
    "pts": [2, 1, 4]
  }, {
    "pts": [14, 22, 41, 23]
  }]
];


gp[0].forEach(({pts},n)=>{ 
  const race=pts.reduce((a,c,i)=>{
    if(+c>=20) a.push(i);
    return a;
  },[]);
  if (race.length) {
    console.log(`race at n=${n}: ${race}`);
  };
});

Javascript相关问答推荐

订阅操作顺序

将未等待的未处理的错误promise 转变为警告@ changeTicksAndRejections(由当时的抛出错误创建)

vue3类型脚本中可能未定义对象''

使用JavaScript更改json值顺序

Express.js:以块形式发送响应

如果没有尾随斜线,托管在收件箱中的React/Vite将无法工作

创建1:1比例元素,以另一个元素为中心

RxJS setTimeout操作符等效

格式值未保存在redux持久切片中

为什么我的列表直到下一次提交才更新值/onChange

如何在Javascript中使用Go和检索本地托管Apache Arrow Flight服务器?

切换时排序对象数组,切换不起作用

Promise Chain中的第二个useState不更新

在带有背景图像和圆形的div中添加长方体阴影时的重影线

在运行时使用Next JS App Router在服务器组件中运行自定义函数

用JS从平面文件构建树形 struct 的JSON

Reaction-SWR-无更新组件

如何在和IF语句中使用||和&;&;?

MongoDB中的嵌套搜索

如何在AG-Grid文本字段中创建占位符