来自阵列的Jquery .slice chars?

时间:2018-03-13 12:36:55

标签: javascript jquery

var obj = $(".yt-simple-endpoint.inline-block.style-scope.ytd-thumbnail")
        console.log("slicing obj " + obj[0].slice(32, 43));

obj是一个包含youtube链接的数组。如果您在youtube.com主页上,它包含大约32个youtube链接。所以我在这里尝试做的是,选择obj[0]"首先在该数组中使用urtube url并仅切片观察后的部分?v =。

然而,当我尝试这个时,我收到此错误消息:" contentscript.js:137未捕获TypeError:obj [0] .slice不是函数     在contentscript.js:137"

2 个答案:

答案 0 :(得分:1)

如果要从数组中的第一个条目中提取某些字符,您确实可以使用urls[0]从数组中获取第一个条目。您可能想验证它的存在。

要提取一些字符,您可以使用substr。即(从YT链接观看id)

  var url = "https://www.youtube.com/watch?v=Oh3zMzmwsCA";
  
  var urls = [url];
  first_url = urls[0];
  var myRegexp = /watch\?v=(.{11})/g;
  var match = myRegexp.exec(first_url);
  console.log(match[1]); // abc

exec函数返回基于正则表达式找到的所有匹配项。对于每个所谓的“组”,由在{。}周围看到的'('&')'确定。匹配时将创建另一个数组条目。

除了这些匹配之外,第一个元素将始终是正则表达式的完全匹配。

\?会阻止正则表达式看到“?”作为正则表达式运算符。这意味着它将匹配文字“?”字符。

答案 1 :(得分:1)

正如您在评论中提到的,您想从youtube链接中提取视频网址。

要从网址获取查询字符串参数,您可以使用this answer中提供的解决方案。

然后,要获取网址的v部分,请执行以下操作:

var urls = [
  'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
  'https://www.youtube.com/watch?v=4fndeDfaWCg',
  'https://www.youtube.com/watch?v=yPYZpwSpKmA'
];

var firstLink = getParameterByName('v', urls[0]);

document.write(firstLink);



function getParameterByName(name, url) {
  if (!url) {
    url = window.location.href
  }
  name = name.replace(/[\[\]]/g, "\\$&");
  var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
    results = regex.exec(url);
  if (!results) {
    return null
  }
  if (!results[2]) {
    return ''
  }
  return decodeURIComponent(results[2].replace(/\+/g, " "))
}