gpt4 book ai didi

javascript - 过滤 Javascript 对象数组

转载 作者:行者123 更新时间:2023-11-30 08:03:10 25 4
gpt4 key购买 nike

我正在尝试基于其中两个获取一个新的数组对象。

log1 = {1:"London",2:"New york",4:"Berlin"};
log2 = [{id:1, location:"EU"},{id:2, location:"US"},{id:18, location:"Asia"}];

我想确保 log1 键都存在于 log2 中,如果不存在,我想删除它。所以这将是:

 result = {1:"London",2:"New york"};

我不能用过滤器来做,因为它只需要一个对象。有什么方法可以基于两个对象数组进行过滤吗?有什么巧妙的方法吗?

最佳答案

如果您使用带有 Array.map()Array.filter()Object.keys() 的最新版本的 JS > 您可以尝试以下更实用的方法:

var log1 = {
1: "London",
2: "New york",
4: "Berlin"
};

var log2 = [
{id: 1, location: "EU"},
{id: 2, location: "US"},
{id: 18, location: "Asia"}
];


var ids = log2.map(function(obj) { return obj.id; }).map(String);

Object.keys(log1).filter(function(key) {
return ids.indexOf(key) === -1;
}).forEach(function(k) {
delete log1[k];
});

console.log(log1);

应该产生:

{ '1': 'London', '2': 'New york' }

示例:http://repl.it/RnF/2

希望这有帮助:)

编辑

否则,为了浏览器兼容性和更多,您可以考虑其他海报建议的 lodash 或下划线。或者使用 polyfill!

MDN 在以下每个页面的底部为旧环境提供了 polyfill(如果您需要兼容性):

关于javascript - 过滤 Javascript 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23266633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com