Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;concat“;不将JavaScript数组连接在一起?_Javascript_Arrays - Fatal编程技术网

&引用;concat“;不将JavaScript数组连接在一起?

&引用;concat“;不将JavaScript数组连接在一起?,javascript,arrays,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()<>]+\

我正在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);
}
var scriptElements=document.scripts;
var scriptUrls=[];
//URL匹配
[a-z0-10-10-9%[a-z[a-z[a-z0-10-9-9%[a-z0-9-9%[a-z0-9-9-9%[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-z[[a-z[[[[w-[w-[[w-[[[w-[w-[[[[w-[w-]]]的[[[[[[[[[[w--]]]]]的[[[[[[[[[[[[[[[[[C--]]]]]]]]]的[[[[[[[[[[[[[[[[[[[[[[w-------]]]]]]]]]]]]]]]]]]]+以下以下以下以下以下::::::::]{};:“,«»””)/i;
对于(var i=0;i

我看到非空数组打印在“local”之后,但“global”始终保持为空数组。发生了什么事?

。concat
创建了一个新数组。您需要覆盖旧数组

scriptUrls = scriptUrls.concat(urls);

或者,如果要保留原始的
脚本URL
数组,可以
.push()
中的值

scriptUrls.push.apply(scriptUrls, urls);
这使用
.apply()
URL
转换为传递给
.push()
的单个参数。这样
URL
的内容将作为单个项目添加到
脚本URL


另外,请注意,
.concat()
会展平数组。如果需要数组数组,则可以使用
脚本URL.push(URL)

concat不会更改此数组或作为参数提供的任何数组,而是返回一个“一级深度”副本,其中包含从原始数组组合的相同元素的副本


没错,人们在这方面经常误解JS。大多数数组和字符串方法都需要赋值来进行更改,例如
replace
concat
,但其他方法则没有,例如
splice
。@user1689607-是的,在我发表评论10秒后意识到了这一点。@elclanrs:我同意。我同意想想
.splice
.reverse
是唯一修改原始数组的方法。当然,没有字符串方法可以修改原始数组。因为字符串是不可变的。非常感谢!我想我不应该这么晚才尝试编写代码。在允许我的那一刻(第二刻)接受答案。使用
apply()
非常棒,