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());