我正在使用react-native和redux构建搜索功能。在我的动作创作者中,我将从Firebase返回一个json。然后我将json变成一个数组:
const myObj = snapshot.val(); //json
const array1 = Object.entries(myObj).map(function(key) {
return (key);
});
这样我可以通过array1过滤()。
const array2 = array1.filter(
(value) => {
const element = "John Deere"; // I've hard coded the user input
return (value.indexOf(element) !== -1);
});
但是,array1是一个多维数组。因此,此filter()无权访问嵌套数组。如果我像这样创建一个数组copy1,它将具有访问权限:
const copy1 = [];
const len = array1.length;
for (let i = 0; i < len; i++) {
copy1.push(array1[i][1]);
}
但后来我无法访问
array1[i][0].
该索引是Firebase创建的唯一ID。我需要确保我的数据不会混淆。
有没有办法将.filter()一个特定的数组索引(array1 [i] [1]),但要返回特定索引与条件匹配的完整数组?
(array1 [i] where array1 [i][1] matches the user input(element))
我不能回复:
array1 [i][j]
因为array1 [i] [0]只是一个字符串而不是一个对象(键值对),所以会导致错误。
非常感谢任何帮助!
答案 0 :(得分:0)
在filter()
变化:
return (value.indexOf(element) !== -1);
要
return (value[specifiedIndex].indexOf(element) !== -1);
OR
return value[specifiedIndex].includes(element);
答案 1 :(得分:0)
这是有效的:
const array2 = array1.filter(
(value) => {
const element = "John Deere";
for (let i = 0; i < len; i++) {
return (value[1].make.indexOf(element) !== -1);
}
});
这当然只适用于“make”键。但我确信可以使用|| filter函数中的operator包含更多键。