gpt4 book ai didi

javascript - 在 JavaScript 中从一个对象到另一个对象搜索键/值对

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:22:28 24 4
gpt4 key购买 nike

如果我在 JavaScript 中有一组对象和一个对象:

var data = [{"a": 1, "b": 2}, {"a": 1}, {"a": 1, "b": 2, "c": 3}];
var myFilter = {"a": 1, "b": 2};

...并希望使用 myFilter 对象作为对象数组的过滤器来创建新的对象数组,当且仅当该对象至少匹配或包含 myFilter 键/值对。

有什么建议可以让我继续并将其放入代码中吗?我需要使用 myFilter 键/值对创建一个从 data 过滤的新数组。

我能够做到这一点,但 myFilter 只包含 1 个键/值对。

我期望的新数组是:

var newArr = [];
newArr = [{"a": 1, "b": 2}, {"a": 1, "b": 2, "c": 3}];

最佳答案

您可以使用 arr.filter(callback[, thisArg])为此:

var data = [{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 3 }]
var myFilter = { "a": 1, "b": 2 }

var myFilterFunction = function(obj) {
for (var p in myFilter) {
if (obj[p] !== myFilter[p]) return false
}
return true
}

var newArr = data.filter(myFilterFunction)

document.write(JSON.stringify(newArr))


一个更通用的方法是这个 filterFuncByObj(filterObj) 函数,它接受任何自定义过滤器对象:

data.filter(filterFuncByObj(myFilter)):

var data = [{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 3 }]
var myFilter = { "a": 1, "b": 2 }

var newArr = data.filter(filterFuncByObj(myFilter))

// Demo Output
document.write(JSON.stringify(newArr))


function filterFuncByObj(filterObj) {
return function(obj) {
for (var p in filterObj) {
if (obj[p] !== filterObj[p]) return false
}
return true
}
}

关于javascript - 在 JavaScript 中从一个对象到另一个对象搜索键/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34472029/

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