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
Javascript 如何将数组中的真字符串和假字符串解析为布尔值_Javascript_Arrays_String_Boolean - Fatal编程技术网

Javascript 如何将数组中的真字符串和假字符串解析为布尔值

Javascript 如何将数组中的真字符串和假字符串解析为布尔值,javascript,arrays,string,boolean,Javascript,Arrays,String,Boolean,如何在Javascript中将数组中的true和false字符串解析为布尔值 比如说, 发件人: {"id":1,"dashboardId":1,"w":2,"h":2,"x":0,"y":0,"i":"n0","minW":1,"minH":1,"maxH":1000,"moved":"false","static":"false","widget":"Photo"} 致: moved和static中的值必须是布尔值,但它们显示为字符串。有没有办法只更改这些值 这是我获取数组的函数: loa

如何在Javascript中将数组中的
true
false
字符串解析为布尔值

比如说,

发件人:

{"id":1,"dashboardId":1,"w":2,"h":2,"x":0,"y":0,"i":"n0","minW":1,"minH":1,"maxH":1000,"moved":"false","static":"false","widget":"Photo"}
致:

moved
static
中的值必须是布尔值,但它们显示为字符串。有没有办法只更改这些值

这是我获取数组的函数:

loadData = () => {

    let dashboardId = 1;

    return axios
        .get('api/dashboards/' + dashboardId)
            .then(result => {

                //@TODO Parse true and false strings to become booleans

                console.log(result);
                this.setState({
                    items: result.data,
                    selectedOption: '',
                    newCounter: originalLayouts.length
                });
            })
            .catch(error => {
                console.log(JSON.stringify(this.state.items));
                console.error('error: ', error);
            })
};

您可以在对象键上循环,然后比较这些布尔字符串,并将实际的
布尔值指定给该属性:

var data={“id”:1,“dashboardId”:1,“w”:2,“h”:2,“x”:0,“y”:0,“i”:“n0”,“minW”:1,“minH”:1,“maxH”:1000,“moved”:“false”,“static”:“false”,“widget”:“Photo”};
Object.key(数据).forEach((key)=>{
如果(数据[键]=='false'){
数据[键]=假;
}
如果(数据[键]=='true'){
数据[键]=真;
}
});
控制台日志(数据)您可以这样做:

var data = { "id": 1, "dashboardId": 1, "w": 2, "h": 2, "x": 0, "y": 0, "i": "n0", "minW": 1, "minH": 1, "maxH": 1000, "moved": "false", "static": "false", "widget": "Photo" };
Object.keys(data).forEach((key) => {
    if (data[key] === 'false' || data[key] === 'true') {
        data[key] = JSON.parse(data[key]);
    }
});
console.log(data);
`

将数组中的true和false字符串解析为布尔值

你说数组中的字符串?使用
Array.map()迭代

const items=[“真”、“假”、“其他东西”]
const booleans=items.map(boolFromStringOtherwiseNull)
log({items,booleans})//显示结果
函数boolFromStringOtherwiseNull(s){
如果(s=='true')返回true
如果(s=='false')返回false
返回空
}
您可以简单地在对象上循环并使用三元运算符,使其简洁,
其中a是原始对象

您可以迭代该对象,并严格检查其值是否为
“false”
“true”
,然后手动将其解析为布尔值

例如

函数mapObjectValues(obj={}){
for(obj中的var键){
var val=对象[键];
如果(val==“false”){
obj[key]=false;
}
否则如果(val==“true”){
obj[key]=true;
}
}
}
var tmp={
“id”:1,
“dashboardId”:1,
“w”:2,
“h”:2,
“x”:0,
“y”:0,
“i”:“n0”,
“minW”:1,
“明”:1,
“最大”:1000,
“移动”:“假”,
“静态”:“假”,
“小部件”:“照片”
};
mapObjectValues(tmp);

控制台日志(tmp)那不是数组。在测试字符串是否为“true”然后转换时,有什么特别的问题?你试过什么吗?给你一个提示:
var A=“false”//string;a=JSON.parse(a)//布尔值上面写着:ReferenceError:key未定义
for(a中的var key)
应该可以解决这个问题,我使用的是console,这样暴露的key作为全局变量@BaspaHow你会对一个对象数组执行此操作吗?@Baspa你可以迭代数组,并将每个对象传递到
mapObjectValues
这就是我最终使用的。我喜欢这里的简单和冗长。非常容易理解并根据需要进行扩展:+1:
var data = { "id": 1, "dashboardId": 1, "w": 2, "h": 2, "x": 0, "y": 0, "i": "n0", "minW": 1, "minH": 1, "maxH": 1000, "moved": "false", "static": "false", "widget": "Photo" };
Object.keys(data).forEach((key) => {
    if (data[key] === 'false' || data[key] === 'true') {
        data[key] = JSON.parse(data[key]);
    }
});
console.log(data);
for(key in a){

   a[key] == "true" ? a[key] = true : a[key] == "false" ?  a[key] = false : ''; 

}