为了账号安全,请及时绑定邮箱和手机立即绑定

P5阵列相交

P5阵列相交

慕沐林林 2023-03-18 17:40:14

我试图从一个数组的索引中提取另一个数组的值。我正在使用 loadStrings 加载两个文本文件,它工作正常。我正在将该数据加载到两个单独的数组中。这两个文本文件的长度不同,第一个包含三个值 - 行号,然后是 x 和 y 坐标。第二个文本文件包含我要从第一个文本文件中提取的数据的行号。仅落后两个月的编码时间,这是一项极其艰巨的任务,让我完全陷入困境!到目前为止,我的(非常基本的)代码如下:


let data1;

let data2;

let parsedData1;

let parsedData2;

let combinedData;


function preload() {

  data1 = loadStrings('assets/data1.txt'); // load the data1 file

  data2 = loadStrings('assets/data2.txt'); // load the data2 file

  // console.log(data1);

  // console.log(data2);

}


function setup() {

  createCanvas(600, 400);   

}


function draw() {

  noLoop();

  background(0);

  

  readData1()

  readData2()

}


function readData1() {

  parsedData1 = new Array(data1.length); // create an array for the parsed data


  for (let i = 0; i < data1.length; i++) {

    let parsedData1 = splitTokens(data1[i]);

    // console.log(data1); 

  }

}


function readData2() {

  let combinedData = concat(parsedData1, data2);

  // console.log(combinedData);

}


我正在加载的文本文件包含以下内容:


文本1:


1 200 50

2 100 25

3 200 63

4 123 456

5 124 200

6 700 500

7 600 500

8 200 121

9 300 100

文本 2:


3

5

8

我正在寻找的结果是:


3 150 100

5 124 200

8 200 121

显然可以使用循环来实现所需的结果,但我还没有弄清楚如何!

查看完整描述

2 回答

?
收到一只叮咚

TA贡献1603条经验 获得超4个赞

既然你提到了循环,那么这里是如何使用循环来做到这一点:


如果您知道中的“索引号”data1.txt不会跳过任何数字:


for(let i = 0; i < data2.length; i++) {

  let index = data2[i];

  console.log(data1[index]);

}

否则,您可以像这样使用嵌套循环:


for(let i = 0; i < data2.length; i++) {

  let index = data2[i];

  for(let j = 0; j < data1.length; j++)

  {

    let line = data1[j];

    let lineArr = line.split(" ");

    if(lineArr[0] == index) {

      console.log(line);

    }

  }

}


查看完整回答
反对 回复 2天前
?
烙印99

TA贡献1602条经验 获得超12个赞

为了比较这两个字符串,它们需要在数组(或类似的东西)中。


看一下:


  let text1 = document.getElementById("originaltext").innerHTML.trimRight();

  let compare1 = document.getElementById("comparevalues").innerHTML.trimRight();

  let a1 = text1.split("\n");

  console.log(a1);

  let c1 = compare1.split("\n");

  console.log(c1);

  const r1 = a1.filter(a => c1.includes(a.split(" ")[0]));

  console.log(r1);

<pre id="originaltext">

1 200 50

2 100 25

3 200 63

4 123 456

5 124 200

6 700 500

7 600 500

8 200 121

9 300 100

</pre>

<pre id="comparevalues">

3

5

8

</pre>

这将从示例中的 PRE 标记中读取字符串(但会从您的原始文本字符串中读取)并将它们转换为数组。如果第一个数字出现在第二个列表中并返回一个新的结果数组,则使用“includes”过滤第一个列表



查看完整回答
反对 回复 2天前
  • 2 回答
  • 0 关注
  • 7 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信