Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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
Javascript 数组不是数组_Javascript_Json - Fatal编程技术网

Javascript 数组不是数组

Javascript 数组不是数组,javascript,json,Javascript,Json,我在跑步 var n = []; jQuery.toJSON( n ); 在一个页面上,我看到了“[]”,在另一个页面上看到了“[]”。在这两个页面上,我都使用一个 在FirefoxDOM中,我可以看到两个数组都有相同的函数名,但是。。。不同的: all b(B, A) any j(B, A) all all(iterator, context) any any(iterator, context) 我想在我的脚本之前有一些Array.prototype函数

我在跑步

var n = [];
jQuery.toJSON( n );
在一个页面上,我看到了
“[]”
,在另一个页面上看到了
“[]”
。在这两个页面上,我都使用一个

在FirefoxDOM中,我可以看到两个数组都有相同的函数名,但是。。。不同的:

all     b(B, A)
any     j(B, A)

all     all(iterator, context)
any     any(iterator, context)
我想在我的脚本之前有一些Array.prototype函数。这会导致阵列不同。我无法更改其他代码,我必须以某种方式处理此问题


我尝试了
newarray()
jQuery.makeArray(n)
,结果仍然相同。实际上,我并不关心数组是否相等,但是如何获得相同的JSON代码呢?如果数组中有字符串,情况会变得更糟:
“[\'a\”,“\'b\”]”

额外的引号是由

Array.prototype.toJSON
由原型库和其他库定义的函数。此函数由
jQuery.toJSON
(或JSON.Stringify()调用)并生成额外的引号。如果你愿意

delete Array.prototype.toJSON // remove toJSON for all Arrays
//or
delete n.toJSON // remove toJSON for specific Array
在执行
jQuery.toJSON
之前,这应该是可行的



另一个建议是,最好使用

JSON.stringify(object)
而不是
jQuery.toJSON
。大多数浏览器本机支持它。如果您想确保它在任何地方都有效,请使用,它是
JSON.stringify()
函数的基础


有关JSON.stringify(),请参阅以获取更多信息。

额外的引号是由

Array.prototype.toJSON
由原型库和其他库定义的函数。此函数由
jQuery.toJSON
(或JSON.Stringify()调用)并生成额外的引号。如果你愿意

delete Array.prototype.toJSON // remove toJSON for all Arrays
//or
delete n.toJSON // remove toJSON for specific Array
在执行
jQuery.toJSON
之前,这应该是可行的



另一个建议是,最好使用

JSON.stringify(object)
而不是
jQuery.toJSON
。大多数浏览器本机支持它。如果您想确保它在任何地方都有效,请使用,它是
JSON.stringify()
函数的基础


有关JSON.stringify(),请参阅了解更多信息。

我的恶意攻击是:

function cleanJson(s)
{
    if (s[0] == '"')
    {
        s = s.substring(1, s.length-1).replace(/\\"/g,'"');
    }
    return s;
}

我做了这项工作,但我仍在寻找一个更干净的解决方案。

我对此的拙劣做法是:

function cleanJson(s)
{
    if (s[0] == '"')
    {
        s = s.substring(1, s.length-1).replace(/\\"/g,'"');
    }
    return s;
}

完成了任务,但我仍在寻找一个更干净的解决方案。

有没有可能您两次将其转换为JSON?您可以尝试一下console.dir(n)并查看两者是否有差异?@Gumbo我不知道如果我只运行
jQuery.toJSON([])
@ustun是的,我在第二个框中显示了差异。相同的函数名,但不同的实现。有没有可能您两次将其转换为JSON?能否尝试console.dir(n)并查看两者是否有任何差异?@Gumbo我不知道如果我只是运行
jQuery.toJSON([])
@ustun是的,我在第二个框中显示了差异。相同的函数名,但不同的实现。我做到了,同样的问题。谢谢你的主意!在什么browser+情况下,你会得到额外的引号?嗯,JSON是用于对象的,而不是用于数组(虽然从技术上讲它们也是对象)。如果您想要JSON字符串化数组,您应该首先从该数组创建一个对象,thén stringify。。。你能试试吗?
JSON.stringify({a:[“test”]})=>。对象正常,但数组仍然错误。谢谢,我找到了一个更好的解决方案:
n.toJSON=null
的工作方式相同,但不会影响其他数组。也许你可以把它加到你的答案上。我也这么做了,同样的问题。谢谢你的主意!在什么browser+情况下,你会得到额外的引号?嗯,JSON是用于对象的,而不是用于数组(虽然从技术上讲它们也是对象)。如果您想要JSON字符串化数组,您应该首先从该数组创建一个对象,thén stringify。。。你能试试吗?
JSON.stringify({a:[“test”]})=>。对象正常,但数组仍然错误。谢谢,我找到了一个更好的解决方案:
n.toJSON=null
的工作方式相同,但不会影响其他数组。也许你可以把它加到你的答案上。