javascript - 根据对象数组过滤对象数组返回相同的结果

标签 javascript arrays ecmascript-6 filtering

目标是将硬编码的数据库列名称从我的 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,
    },
];

fiddle

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/

相关文章:

javascript - 休息API : user-agent-based client (app) authorization

arrays - 在swift中查找字符串数组的所有组合

javascript - Chrome 62/Chrome Canary 64 中的 ES6 模块支持,在本地不起作用,CORS 错误

javascript - 如何有条件地解构对象?

javascript - 按嵌套键对数组进行分组

javascript - 动态添加行时计数器的增量

IE8 的 JavaScript 无效参数错误

javascript - 使用后退按钮进行部分 Ajax 更新

c++ - 将二维数组显示为 map

javascript - 行为异常的数组