比较 2 jSON 个具有相同对象的文件
Compare 2 jSON files with same objects
所以我有 2 个 jSON 文件,都具有相同的设置和相同的对象,不同之处在于一个具有未更新的旧数据,另一个具有实时更新的实时数据,我想用新数据减去旧数据,并输出结果。
我使用的代码不成功:
jQuery.getJSON(liveDataURL, function(liveData){
jQuery.getJSON(oldDataURL, function(oldData){
liveData.sort(function(a, b){
return a.number - b.number;
}).reverse();
oldData.sort(function(a, b){
return a.number - b.number;
}).reverse();
var newList = liveData.number - oldData.number;
console.log(newList);
});
感谢任何帮助!
var newList = liveData.number - oldData.number;
这是查找列表之间差异的错误方法。
只要这样做,如果你想找到数字的差异
假设两个列表的长度相同。
var newList = [];
for (var i = 0; i < liveData.length; i++){
newList.append(liveData[i].number - oldData[i].number);
}
减法是什么意思?
a = {foo: 17, bar: 12, baz: false}
b = {foo: 17, bar: 10}
"a - b" 是什么意思?
假设:
"a - b" := {bar: 12, baz: false}
像这样的东西会起作用:
const delta = (a, b) => {
const d = {};
Object.keys(a).forEach(key => {
if (typeof a[key] === 'object') {
d[key] = delta(a[key], b[key] || {});
if (d[key] === undefined) {
delete d[key];
}
} else {
if (a[key] !== b[key]) {
d[key] = a[key];
}
}
});
return Object.keys(d).length ? d : undefined;
};
所以我有 2 个 jSON 文件,都具有相同的设置和相同的对象,不同之处在于一个具有未更新的旧数据,另一个具有实时更新的实时数据,我想用新数据减去旧数据,并输出结果。
我使用的代码不成功:
jQuery.getJSON(liveDataURL, function(liveData){
jQuery.getJSON(oldDataURL, function(oldData){
liveData.sort(function(a, b){
return a.number - b.number;
}).reverse();
oldData.sort(function(a, b){
return a.number - b.number;
}).reverse();
var newList = liveData.number - oldData.number;
console.log(newList);
});
感谢任何帮助!
var newList = liveData.number - oldData.number;
这是查找列表之间差异的错误方法。 只要这样做,如果你想找到数字的差异
假设两个列表的长度相同。
var newList = [];
for (var i = 0; i < liveData.length; i++){
newList.append(liveData[i].number - oldData[i].number);
}
减法是什么意思?
a = {foo: 17, bar: 12, baz: false} b = {foo: 17, bar: 10}
"a - b" 是什么意思?
假设:
"a - b" := {bar: 12, baz: false}
像这样的东西会起作用:
const delta = (a, b) => {
const d = {};
Object.keys(a).forEach(key => {
if (typeof a[key] === 'object') {
d[key] = delta(a[key], b[key] || {});
if (d[key] === undefined) {
delete d[key];
}
} else {
if (a[key] !== b[key]) {
d[key] = a[key];
}
}
});
return Object.keys(d).length ? d : undefined;
};