gpt4 book ai didi

javascript - 返回包含字符串的嵌套数组的最有效方法 (JavaScript)

转载 作者:行者123 更新时间:2023-12-02 22:00:40 26 4
gpt4 key购买 nike

我想知道是否有一种更有效的方法来基于匹配值访问嵌套数组,而不是使用“forEach”或“for”循环。

这就是我现在所拥有的:

var a = [
["aaa", "111", "!!!"],
["bbb", "222", "@@@"],
["ccc", "333", "###"],
["ddd", "444", "$$$"]
];

var b = "222";

var c;

a.forEach((aa) => {
if (aa.includes(b)) c = aa;
});

// Ideally c would return ["bbb", "222", "@@@"]

console.log(c);

谢谢

最佳答案

我假设您想找到第一个包含针的数组:

var a = [
["aaa", "111", "!!!"],
["bbb", "222", "@@@"],
["ccc", "333", "###"],
["ddd", "444", "$$$"]
];



function search(haystack, needle) {
return haystack.find( item => item.includes(needle) );
}

console.log(search(a,'222'));

如果你的数据是静态的,你可以创建一个缓存,并使用needle来获取数组。

var a = [
["aaa", "111", "!!!"],
["bbb", "222", "@@@"],
["ccc", "333", "###"],
["ddd", "444", "$$$"]
];

const cache = a.reduce(
(out, row) => {
for (const item of row) out[item] = row;
return out;
},
Object.create(null)
);


console.log(cache['222']);

现代 ES2019 版本,使用 flatMap 和 Map:

const a = [
["aaa", "111", "!!!"],
["bbb", "222", "@@@"],
["ccc", "333", "###"],
["ddd", "444", "$$$"]
];

const m = new Map(a.flatMap(r=>r.map(i=>[i,r])));

console.log(m.get('222'));

关于javascript - 返回包含字符串的嵌套数组的最有效方法 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59888689/

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