Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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将“null”替换为“false”问题_Javascript_Jquery - Fatal编程技术网

Javascript将“null”替换为“false”问题

Javascript将“null”替换为“false”问题,javascript,jquery,Javascript,Jquery,当我试图将null替换为false时,它不会被替换。当您替换其他单词时,它会起作用,例如回答偶数:null有效,但null无效。有人能解释问题出在哪里吗?您正在转义\n换行符。您需要文本n: 另外,您正在使用JSON.stringify,为什么不也使用反向JSON.parse而不是jQuery呢 最后,为什么要解析这个呢?为什么不使用默认值访问答案: var x = [{ "answer": null, "answered": true, // many more fie

当我试图将null替换为false时,它不会被替换。当您替换其他单词时,它会起作用,例如回答偶数:null有效,但null无效。有人能解释问题出在哪里吗?

您正在转义\n换行符。您需要文本n:

另外,您正在使用JSON.stringify,为什么不也使用反向JSON.parse而不是jQuery呢

最后,为什么要解析这个呢?为什么不使用默认值访问答案:

var x = [{
    "answer": null,
    "answered": true,
    // many more fields here
    "answers": {
        "correct": null,
        "response": null
    }
}, {
    "answer": null,
    "answered": true,
    // many more fields here
    "answers": {
        "correct": null,
        "response": null
    }
}];

var string = JSON.stringify(x).toString().replace(/null/g, "false");
var thing = jQuery.parseJSON(string);
console.log(thing);

最好避免使用JSON,但使用递归函数:

var ans = x.answer || false; // Returns false for any falsey value, including null

您是否尝试使用而不是null?您正在转义\n。这不应该是/null/g吗。话虽如此,这整件事似乎很奇怪。@RGraham:/null/g,:false shwoing JSON.parse意外字符error@amin:尝试不working@FrancisStalin我在你的代码中没有看到任何JSON.parse?还有,为什么现在替换为:false?假设$.parseJSON将调用JSON。parse@blgt为什么要麻烦呢?如果您想要浏览器支持,就不会使用JSON.stringify。我不得不在我的JSFIDLE中包含整个jQuery库,只是为了这个函数——也许OP浪费了同样的带宽?我并不反对,只是说OP的情况下,它在技术上是一样的?肯定乍一看很不错,但你有一些拼写错误。obj['k']应该是obj[k],也应该是obj[k]==false;应为obj[k]=false;:是的,我们可以这样做,我的问题是为什么replace函数不接受null替换,因为在“null”之前有一个“\”,您可以使用简单字符串作为模式:str.replacenull,false;
var ans = x.answer || false; // Returns false for any falsey value, including null
function convertNullToFalse(obj){
    for(var k in obj){
        if(obj[k] === null){
            obj[k] = false;
            continue;
        }
        if(typeof obj[k] === "object"){
            convertNullToFalse(obj[k]);
        }
    }
}

convertNullToFalse(x);

console.log(x);