Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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 组合JSON数据集_Javascript_Json_Parsing_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 组合JSON数据集

Javascript 组合JSON数据集,javascript,json,parsing,firebase,firebase-realtime-database,Javascript,Json,Parsing,Firebase,Firebase Realtime Database,假设我有以下两个数据集: { "food": { "apple": { "color": "red" }, "orange": { "color": "orange" }, "potato": { "color": "brown" }, "tomato": { "color": "red" } } } 及 有没有一种方法可以将这

假设我有以下两个数据集:

{ "food": {
    "apple": {
        "color": "red"
        },
    "orange": {
        "color": "orange"
        },
    "potato": {
        "color": "brown"
        },
    "tomato": {
        "color": "red"
        }
    }
}

有没有一种方法可以将这两个集合结合起来,使它们最终看起来像:

{ "food": {
        "apple": {
            "color": "red",
            "isFruit": "yes"
            },
        "orange": {
            "color": "orange",
            "isFruit": "yes"
            },
        "potato": {
            "color": "brown"
            }
        "tomato": {
            "color": "red",
            "isFruit": "yes"
            }
        }
    }
我假设一定有某种方法可以解析这两个集合并将它们组合起来,但我还没有弄清楚如何进行。

var foodsData={
var foodsData = { "food": {
    "apple": {
        "color": "red"
        },
    "orange": {
        "color": "orange"
        },
    "potato": {
        "color": "brown"
        },
    "tomato": {
        "color": "red"
        }
    }
};

var fruitsData = { "fruits": {
    "apple": {
        "isFruit": "yes"
        },
    "orange": {
        "isFruit": "yes"
       },
    "tomato": {
        "isFruit": "yes"
       }
    }
};


for (f in foodsData.food) {
  if (fruitsData.fruits.hasOwnProperty(f)) {
    foodsData.food[f].isFruit = fruitsData.fruits[f].isFruit
  } 
} 
console.log(foodsData);
“食物”:{ “苹果”:{ “颜色”:“红色” }, “橙色”:{ “颜色”:“橙色” }, “土豆”:{ “颜色”:“棕色” }, “西红柿”:{ “颜色”:“红色” } } }; var FROUTSDATA={ “水果”:{ “苹果”:{ “isFruit”:“是”, “isRoot”:“否”, “季节性”:“是”, }, “橙色”:{ “isFruit”:“是”, “isRoot”:“否” }, “西红柿”:{ “isFruit”:“是”, “isRoot”:“否”, “季节性”:“否”, } } }; 用于(食品中的水果数据。食品){ if(果品数据果品hasOwnProperty(果品)){ var allProperties=Object.keys(水果数据.fruits[fruit]); 对于(var i=0;i
检查这个

即使您在水果数据中为水果添加更多属性,这也会起作用。

尝试JavaScript

var firstJSON={
“食物”:{
“苹果”:{
“颜色”:“红色”
},
“橙色”:{
“颜色”:“橙色”
},
“土豆”:{
“颜色”:“棕色”
},
“西红柿”:{
“颜色”:“红色”
}
}
};
var secondJSON={
“水果”:{
“苹果”:{
“isFruit”:“是”
},
“橙色”:{
“isFruit”:“是”
},
“西红柿”:{
“isFruit”:“是”
}
}
};
for(firstJSON.food中的变量i){
secondJSON.fruits.hasOwnProperty(i)?firstJSON.food[i]。isFruit=secondJSON.fruits[i]。isFruit:“”;
}

log(firstJSON)尝试下面的解决方案,它将以通用方式处理所有JSON对象。 我还处理了对象的动态长度

我希望这对你有帮助

var obj1 = { "food": {
            "apple": {
                "color": "red"
                },
            "orange": {
                "color": "orange"
                },
            "potato": {
                "color": "brown"
                },
            "tomato": {
                "color": "red"
                }
            }
        }
var obj2 = { "fruits": {
                "apple": {
                    "isFruit": "yes"
                    },
                "orange": {
                    "isFruit": "yes"
                   },
                "tomato": {
                    "isFruit": "yes"
                   }
                }
            }

function result() {
    var resObj = [];

    if(objSize(obj1[Object.keys(obj1)]) >= objSize(obj2[Object.keys(obj2)])) {
        var indexObj1 = 0;
        var indexObj2 = 0;
        for(var i in obj1[Object.keys(obj1)]) {
            var flag= false;
            indexObj1++;
            indexObj2 = 0;
            for(var j in obj2[Object.keys(obj2)]) {
                indexObj2++;
                if(indexObj2 == indexObj1){
                    if(i == j) {
                        var item = [];
                        var item1 = {};

                        item.push(obj1[Object.keys(obj1)][i]);
                        item.push(obj2[Object.keys(obj2)][j]);
                        item1[i] = item;            

                        resObj.push(item1);
                        flag = true;
                        break;
                    } else {
                        var item = [];
                        var item1 = {};

                        item.push(obj1[Object.keys(obj1)][i]);
                        item1[i] = item;

                        resObj.push(item1);

                        item = [];
                        item1 = {};
                        item.push(obj2[Object.keys(obj2)][j]);
                        item1[j] = item;            

                        resObj.push(item1);
                        flag = true;
                        break;
                    }
                }
            }
            if(!flag) {
                var item1 = {};

                item.push(obj1[Object.keys(obj1)][i]);
                item1[i] = item;            

                resObj.push(item1);
                flag = true;
            }

        }
    } else {
        for(var i in obj2[Object.keys(obj2)]) {
            var flag= false;
            for(var j in obj1[Object.keys(obj1)]) {
                if(i == j) {
                    var item = [];
                    var item1 = {};

                    item.push(obj1[Object.keys(obj1)][i]);
                    item.push(obj2[Object.keys(obj2)][j]);
                    item1[i] = item;            

                    resObj.push(item1);
                    flag = true;
                    break;
                } 
            }
            if(!flag) {
                var item1 = {};

                item.push(obj1[Object.keys(obj1)][i]);
                item1[i] = item;            

                resObj.push(item1);
                flag = true;
            }

        }
    }

    return resObj;
}

function objSize(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
}

 console.log(result());
请在下面的提琴中找到工作演示


解析它,然后使用目前为止最漂亮的一行式答案添加数据。谢谢。@Werner谢谢!!
   var foodsData = {
  "food": {
    "apple": {
      "color": "red"
    },
    "orange": {
      "color": "orange"
    },
    "potato": {
      "color": "brown"
    },
    "tomato": {
      "color": "red"
    }
  }
};

var fruitsData = {
  "fruits": {
    "apple": {
      "isFruit": "yes",
      "isRoot": 'no',
      "seasonal": 'Yes',
    },
    "orange": {
      "isFruit": "yes",
      "isRoot": 'no'
    },
    "tomato": {
      "isFruit": "yes",
      "isRoot": 'No',
      "seasonal": 'No',
    }
  }
};


for (fruit in foodsData.food) {
  if (fruitsData.fruits.hasOwnProperty(fruit)) {
    var allProperties = Object.keys(fruitsData.fruits[fruit]);
    for (var i = 0; i < allProperties.length; i++) {
      var property = allProperties[i];
      foodsData.food[fruit][property] = fruitsData.fruits[fruit][property];
    }
  }
}
console.log(foodsData);
var obj1 = { "food": {
            "apple": {
                "color": "red"
                },
            "orange": {
                "color": "orange"
                },
            "potato": {
                "color": "brown"
                },
            "tomato": {
                "color": "red"
                }
            }
        }
var obj2 = { "fruits": {
                "apple": {
                    "isFruit": "yes"
                    },
                "orange": {
                    "isFruit": "yes"
                   },
                "tomato": {
                    "isFruit": "yes"
                   }
                }
            }

function result() {
    var resObj = [];

    if(objSize(obj1[Object.keys(obj1)]) >= objSize(obj2[Object.keys(obj2)])) {
        var indexObj1 = 0;
        var indexObj2 = 0;
        for(var i in obj1[Object.keys(obj1)]) {
            var flag= false;
            indexObj1++;
            indexObj2 = 0;
            for(var j in obj2[Object.keys(obj2)]) {
                indexObj2++;
                if(indexObj2 == indexObj1){
                    if(i == j) {
                        var item = [];
                        var item1 = {};

                        item.push(obj1[Object.keys(obj1)][i]);
                        item.push(obj2[Object.keys(obj2)][j]);
                        item1[i] = item;            

                        resObj.push(item1);
                        flag = true;
                        break;
                    } else {
                        var item = [];
                        var item1 = {};

                        item.push(obj1[Object.keys(obj1)][i]);
                        item1[i] = item;

                        resObj.push(item1);

                        item = [];
                        item1 = {};
                        item.push(obj2[Object.keys(obj2)][j]);
                        item1[j] = item;            

                        resObj.push(item1);
                        flag = true;
                        break;
                    }
                }
            }
            if(!flag) {
                var item1 = {};

                item.push(obj1[Object.keys(obj1)][i]);
                item1[i] = item;            

                resObj.push(item1);
                flag = true;
            }

        }
    } else {
        for(var i in obj2[Object.keys(obj2)]) {
            var flag= false;
            for(var j in obj1[Object.keys(obj1)]) {
                if(i == j) {
                    var item = [];
                    var item1 = {};

                    item.push(obj1[Object.keys(obj1)][i]);
                    item.push(obj2[Object.keys(obj2)][j]);
                    item1[i] = item;            

                    resObj.push(item1);
                    flag = true;
                    break;
                } 
            }
            if(!flag) {
                var item1 = {};

                item.push(obj1[Object.keys(obj1)][i]);
                item1[i] = item;            

                resObj.push(item1);
                flag = true;
            }

        }
    }

    return resObj;
}

function objSize(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
}

 console.log(result());