gpt4 book ai didi

javascript - 如何循环遍历数组内的多个数组并从中过滤值-Javascript

转载 作者:行者123 更新时间:2023-12-01 01:10:32 26 4
gpt4 key购买 nike

我的代码使用 EXTJS 框架。下面是我的数组结构:

data = [{
id: 22,
rows: [{
id: "673627",
name: "ABS",
address: "536street"
}, {
id: "333",
name: "TEST$$",
address: "536street"
}, {
id: "999",
name: "TEST$$",
address: "536street"
}]

}, {
id: 33,
rows: [{
id: "899",
name: "TES",
address: "536street"
}, {
id: "333",
name: "TEST$$",
address: "536street"
}, {
id: "999",
name: "TES673",
address: "536street"
}]

}]

现在我想从这个数组中过滤名称,我将其值与“TEST$$”进行比较。我正在这样做;

Ext.each(data, function(item) {
filter = item.rows.filter(function(name) {
return name.name === "TEST$$";
}, this);
}, this);
console.log(filter);

在这种情况下,它仅返回 1 个匹配项,而我对此特定值有 3 个匹配项。它返回数据数组中最后一项的匹配项,因此我没有得到所有匹配的值,知道如何循环它以获得所有匹配的值吗?

谢谢!

最佳答案

您在 data 数组的每次迭代中重新分配 filter 变量:

filter = item.rows.filter(function(name) {
return name.name === "TEST$$";
}, this);

在最后一次迭代中,只有一个匹配项,即 id333 的匹配项,因此这是运行 Ext 后您看到的唯一匹配项.each。尝试推送到不会被覆盖的外部数组:

const testItems = [];
Ext.each(data, function(item) {
const filtered = item.rows.filter(row => row.name === "TEST$$")
testItems.push(...filtered);
});
console.log(testItems);

请注意,无需传递 this 上下文。

另一个选项是 flatMap 首先将所有提取到单个数组:

const output = data
.flatMap(({ rows }) => rows)
.filter(({ name }) => name === 'TEST$$');

关于javascript - 如何循环遍历数组内的多个数组并从中过滤值-Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55190940/

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