提问者:小点点

在JavaScript中将简单数组转换为“嵌套数组”的方法有哪些?


我想在我的远程虚拟机上捕获屏幕截图,而不使用Display。 我在nodejs中遇到了一个库“Capture Screenshot”(https://github.com/sindresorhus/capture-website),非常简单。

获取单个链接的截图相当简单,但是获取多个截图就变得棘手了。 我不想把链接手动,因为这将耗费时间。 我正在运行一个脚本,以获取python中的所有锚标记,并保存一个csv文件的链接收集。 这就是我将保存的csv文件转换为JavaScript数组时的样子。

[ 'https://www.google.com/imghp?hl=en&tab=wi',
  'https://maps.google.com/maps?hl=en&tab=wl',
  'https://play.google.com/?hl=en&tab=w8',
  'https://www.youtube.com/?gl=US&tab=w1',
  'https://news.google.com/nwshp?hl=en&tab=wn',
  'https://mail.google.com/mail/?tab=wm',
  'https://drive.google.com/?tab=wo',
  'https://www.google.com/intl/en/about/products?tab=wh',
  'https://accounts.google.com/ServiceLogin?hl=en&passive=true&continue=https://www.google.com/',
  'https://www.google.com/url?q=https://lifeinaday.youtube/%3Futm_source%3Dgoogle%26utm_medium%3Dhppcta%26utm_campaign%3D2020&source=hpp&id=19019062&ct=3&usg=AFQjCNEJMAD58Mjdnro8Mjm-RtJ3nfEIZA&sa=X&ved=0ahUKEwi98PWM4-HqAhVh1uAKHeYGCPwQ8IcBCAU',
  '' ]

现在的问题是,我正在使用的库需要一个数组的数组和我想要分配的屏幕截图的名称。 像这样的。

const items = [
    ['https://sindresorhus.com', 'sindresorhus'],
    ['https://github.com', 'github'],
    // …
];

我是javscript新手,很难解决这个问题。 任何帮助都将不胜感激。


共2个答案

匿名用户

您可以通过映射和正则表达式来实现

null

const arr = ['https://www.google.com/imghp?hl=en&tab=wi',
  'https://maps.google.com/maps?hl=en&tab=wl',
  'https://play.google.com/?hl=en&tab=w8',
  'https://www.youtube.com/?gl=US&tab=w1',
  'https://news.google.com/nwshp?hl=en&tab=wn',
  'https://mail.google.com/mail/?tab=wm',
  'https://drive.google.com/?tab=wo',
  'https://www.google.com/intl/en/about/products?tab=wh',
  'https://accounts.google.com/ServiceLogin?hl=en&passive=true&continue=https://www.google.com/',
  'https://www.google.com/url?q=https://lifeinaday.youtube/%3Futm_source%3Dgoogle%26utm_medium%3Dhppcta%26utm_campaign%3D2020&source=hpp&id=19019062&ct=3&usg=AFQjCNEJMAD58Mjdnro8Mjm-RtJ3nfEIZA&sa=X&ved=0ahUKEwi98PWM4-HqAhVh1uAKHeYGCPwQ8IcBCAU',
  '',
];

function extractName(str) {
  const regex = /https:\/\/(.*?)\//g;

  return regex.exec(str);
}

const items = arr.map(x => [
  x,
  extractName(x),
]);

console.log(items);

匿名用户

看起来您正在使用的库需要一个具有URL和文件名的对数组。

我会将您的原始数组映射到对数组,但是您必须弄清楚要对文件名做什么。

假设您有一个名为toFileName的函数,它将接受一个URL字符串并返回一个您想要用于该URL的文件名,您可以将原始数组映射到如下所示的对数组中:

const pairArr = originalArray.map((url) => {
    const fileName = toFileName(url);
    return [url, fileName];
});

如果您只是想尝试使用URL作为文件名,您可以这样做:

const pairArr = originalArray.map((url) => {
    return [url, url];
});

不过,这将是大多数URL的一个问题,因为它们将包含对文件名无效的字符。 如果您需要使用此方法的文件扩展名,则可以对返回对中的第二项使用字符串连接(url+'.png')。