目标是将硬编码的数据库列名称从我的 React 组件中删除到配置文件中。不使用 data.X,而是使用 data.A,如下所示。这样,如果他们将 X 更改为其他内容,我只需要更改 X 的配置文件,然后我的 React 组件中的所有位置都会更新,因为 data.A 位于组件中。
问题是过滤仅返回数据中的最后一个对象。任何帮助将不胜感激,任何有关删除嵌套 for 循环的建议都将有助于学习。
期望的输出:
[
{
"A": 1,
"B": 2,
},
{
"A": 4,
"B": 5,
},
{
"A": 7,
"B": 8,
},
];
当前输出:
[
{
"A": 7,
"B": 8,
},
{
"A": 7,
"B": 8,
},
{
"A": 7,
"B": 8,
},
];
let data = [
{
"X": 1,
"Y": 2,
"Z": 3,
},
{
"X": 4,
"Y": 5,
"Z": 6,
},
{
"X": 7,
"Y": 8,
"Z": 9,
},
];
let keys = {
A: 'X',
B: 'Y',
};
let keyChain = {};
let cleanedData = [];
for (let key in keys) {
keyChain[key] = '';
}
for (let i in data) {
cleanedData[i] = keyChain;
for (let key in keys) {
if (keys[key] in data[i]) {
cleanedData[i][key] = data[i][keys[key]];
};
}
}
console.log(cleanedData);
最佳答案
只需将最后一部分代码更改为以下即可实现
for (let i in data) {
cleanedData[i] ={}
for (let key in keys) {
if (keys[key] in data[i]) {
cleanedData[i][key] = data[i][keys[key]];
};
}
}
console.log(cleanedData);
let data = [
{
"X": 1,
"Y": 2,
"Z": 3,
},
{
"X": 4,
"Y": 5,
"Z": 6,
},
{
"X": 7,
"Y": 8,
"Z": 9,
},
];
let keys = {
A: 'X',
B: 'Y',
};
let keyChain = {};
let cleanedData = [];
// construct the placeholder key value pair array
for (let key in keys) {
keyChain[key] = '';
}
// check keys to see if there's a match with the json
for (let i in data) {
cleanedData[i] ={}
for (let key in keys) {
if (keys[key] in data[i]) {
cleanedData[i][key] = data[i][keys[key]];
};
}
}
console.log(cleanedData);
希望对你有帮助
关于javascript - 根据对象数组过滤对象数组返回相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44330247/