12 javascript arrays
我在Webkit上运行以下代码:
var scriptElements = document.scripts;
var scriptUrls = [];
// URL matching
var regexp = /\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i;
for (var i = 0; i < scriptElements.length; i++) {
element = scriptElements[i];
var urls = element.innerHTML.match(regexp);
console.log('local', urls);
scriptUrls.concat(urls);
console.log('global', scriptUrls);
}
Run Code Online (Sandbox Code Playgroud)
我看到'local'后打印非空数组,但'global'总是保持为空数组.这是怎么回事?
I H*_*azy 48
.concat创建一个新的数组.你需要覆盖旧的.
scriptUrls = scriptUrls.concat(urls);
Run Code Online (Sandbox Code Playgroud)
或者,如果要保留原始scriptUrls数组,可以.push()使用值.
scriptUrls.push.apply(scriptUrls, urls);
Run Code Online (Sandbox Code Playgroud)
这用于.apply()转换urls为传递给的单个参数.push().这样,内容urls将scriptUrls作为单个项目添加.
另外,请注意使阵列.concat() 变平.如果你想要一个阵列数组,那你就可以使用了scriptUrls.push(urls).
| 归档时间: |
|
| 查看次数: |
12600 次 |
| 最近记录: |