提问人:Karuppiah RK 提问时间:1/10/2023 最后编辑:Karuppiah RK 更新时间:1/13/2023 访问量:166
比较两个使用特定变量的对象文本文件值,如果值有差异,则返回该值
Compare two Object literal files value that uses specific variables and return the value if it has differences
问:
我有两组不同的对象文字颜色变量文件。
第一个是 main.js:
const variables = [
{
primary: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK011'
},
secondary: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK021'
},
disable: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK031'
},
primaryHover: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK041'
},
secondaryHover: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK051'
},
primaryActive: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK061'
},
secondaryActive: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK062'
}
}
];
另一个对象文本文件在这里称为 second.js。在这个文件中,我使用了main.js文件中的一些变量。
const compVariables = [
{
list: {
listDefault: {
default: ['var(--primary)'],
dark: ['var(--primary)'],
uniqueId: 'CK011'
},
listHover: {
default: ['blue'],
dark: ['var(--primaryHover)'],
uniqueId: 'CK041'
},
listFocus: {
default: ['var(--primary)'],
dark: ['var(--primary)'],
uniqueId: 'CK081'
},
listActive: {
default: ['var(--primary)'],
dark: ['green'],
uniqueId: 'CK091'
},
listDisable: {
default: ['blue'],
dark: ['green'],
uniqueId: 'CK001'
}
}
}
];
我想实现的是,我想将第二个.js文件与main.js文件进行比较。我在两个文件中都有相同和不同的uniqueId。如果任何列表使用了 second.js 文件中的变量,则应返回与 main.js 文件具有不同的唯一 ID。
此示例的预期输出为:
listDefault、listFocus、listHover 和 listActive 使用变量而不是直接颜色值。因此,这 4 个列表 uniqueId 应与 main.js 颜色变量进行比较。这里我们在 listDefault 中使用了 var(--primary),在 listFocus 和 listActive 中使用了 var(--primaryHover),在 listHover 中使用了 var(--primaryHover)。
- listDefault 和 var(--primary) 都具有相同的 uniqueID - 无需返回
- listFocus 和 var(--primary) 具有不同的 uniqueID - listFocus 键应返回
- listActive 和 var(--primary) 具有不同的 uniqueID - listActive 键应返回
- listHover 和 var(--primaryHover) 都具有相同的 uniqueID - 无需返回
如何比较两个使用特定变量的对象文本文件值,如果值有差异,则返回该值?
const variables = [
{
primary: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK011'
},
secondary: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK021'
},
disable: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK031'
},
primaryHover: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK041'
},
secondaryHover: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK051'
},
primaryActive: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK061'
},
secondaryActive: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK062'
}
}
];
function getUniqueID() {
variables.forEach((element) => {
Object.entries(element).map(([key, value]) => {
value.uniqueId;
console.log(value.uniqueId);
});
});
return;
}
getUniqueID();
const compVariables = [
{
list: {
listDefault: {
default: ['var(--primary)'],
dark: ['var(--primary)'],
uniqueId: 'CK011'
},
listHover: {
default: ['blue'],
dark: ['var(--primaryHover)'],
uniqueId: 'CK041'
},
listFocus: {
default: ['var(--primary)'],
dark: ['var(--primary)'],
uniqueId: 'CK081'
},
listActive: {
default: ['var(--primary)'],
dark: ['green'],
uniqueId: 'CK091'
},
listDisable: {
default: ['blue'],
dark: ['green'],
uniqueId: 'CK001'
}
}
}
];
答:
0赞
Karuppiah RK
1/13/2023
#1
尝试几个小时后,我返回了预期的结果。这是堆栈代码段输出和 JS 代码,
function getUniqueID() {
let myArray = [];
variables.forEach((element) => {
Object.entries(element).map(([key, value]) => {
let result = key+`-`+value.uniqueId;
myArray.push(result);
});
});
// console.log(myArray.join(''));
return myArray.join('');
}
// getUniqueID();
function filterValues() {
compVariables.forEach((element) => {
Object.entries(element.list).map(([key, value]) => {
if (value.default[0].includes('var(--') || value.dark[0].includes('var(--')) {
if (value.default[0].includes('var(--')) {
var result = removeVar(value.default[0].replace('--',''));
var result1 = result+`-`+value.uniqueId;
}
if (value.dark[0].includes('var(--')) {
var result = removeVar(value.dark[0].replace('--',''));
var result2 = result+`-`+value.uniqueId;
}
// console.log(result1);
// console.log(result2);
let idArray = getUniqueID();
let arrayContains = (idArray.indexOf(result1 || result2) > -1);
console.log(!arrayContains ? key : 'SAME UNIQUE ID');
}
});
});
}
filterValues();
const variables = [
{
primary: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK011'
},
secondary: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK021'
},
disable: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK031'
},
primaryHover: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK041'
},
secondaryHover: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK051'
},
primaryActive: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK061'
},
secondaryActive: {
default: ['#fff', 'red', 'green', '#454545', '#333'],
dark: ['blue', 'yellow', 'purple', 'orange', '#777'],
uniqueId: 'CK062'
}
}
];
const compVariables = [
{
list: {
listDefault: {
default: ['var(--primary)'],
dark: ['var(--primary)'],
uniqueId: 'CK011'
},
listHover: {
default: ['blue'],
dark: ['var(--primaryHover)'],
uniqueId: 'CK041'
},
listFocus: {
default: ['var(--primary)'],
dark: ['var(--primary)'],
uniqueId: 'CK081'
},
listActive: {
default: ['var(--primary)'],
dark: ['green'],
uniqueId: 'CK091'
},
listDisable: {
default: ['blue'],
dark: ['green'],
uniqueId: 'CK001'
}
}
}
];
function removeVar(string) {
let result = string.replace('var(', '').replace(')', '');
return result;
}
function getUniqueID() {
let myArray = [];
variables.forEach((element) => {
Object.entries(element).map(([key, value]) => {
let result = key+`-`+value.uniqueId;
myArray.push(result);
});
});
// console.log(myArray.join(''));
return myArray.join('');
}
// getUniqueID();
function filterValues() {
compVariables.forEach((element) => {
Object.entries(element.list).map(([key, value]) => {
if (value.default[0].includes('var(--') || value.dark[0].includes('var(--')) {
if (value.default[0].includes('var(--')) {
var result = removeVar(value.default[0].replace('--',''));
var result1 = result+`-`+value.uniqueId;
}
if (value.dark[0].includes('var(--')) {
var result = removeVar(value.dark[0].replace('--',''));
var result2 = result+`-`+value.uniqueId;
}
// console.log(result1);
// console.log(result2);
let idArray = getUniqueID();
let arrayContains = (idArray.indexOf(result1 || result2) > -1);
console.log(!arrayContains ? key : 'SAME UNIQUE ID');
}
});
});
}
filterValues();
评论