如何按以字符串开头的元素(数组)过滤数组中的对象列表
How to filter list of object in array by element (array) that starts with string
我有以下对象 table :
var search = ["LFBB"];
var data = [
{ id: 1, date: "18-02-2016", valname: ["LFBBR1", "LFFFE5", "LFMBR1", "LFBB5"] },
{ id: 2, date: "19-02-2016", valname: ["LFFF6", "EESF7", "LFMBR1", "LFGG3"] },
{ id: 3, date: "14-02-2016", valname: ["LFBBL2", "LFFBC5", "LFMBR1", "LFBB5"] },
{ id: 4, date: "17-02-2016", valname: ["LEEE5", "LFFFE8", "BGTT5", "LFHT9"] },
];
var search = "LFBB"
如果“valname”的值与“search”的值匹配,我想过滤数据
如果 search = "LFBB" 过滤器应该 return 以下结果:
筛选后的结果:
data = [
{ id: 1, date: "18-02-2016", valname: ["LFBBR1", "LFFFE5", "LFMBR1", "LFBB5"]},
{ id: 3, date: "14-02-2016", valname: ["LFBBL2", "LFFBC5", "LFMBR1", "LFBB5"]}
],
我尝试使用
var startsWithN = data.((data) => data.startsWith(source));
但是没用
感谢您的帮助
您需要迭代 valname
并检查是否以所需字符串开头。
const
data = [{ id: 1, date: "18-02-2016", valname: ["LFBBR1", "LFFFE5", "LFMBR1", "LFBB5"] }, { id: 2, date: "19-02-2016", valname: ["LFFF6", "EESF7", "LFMBR1", "LFGG3"] }, { id: 3, date: "14-02-2016", valname: ["LFBBL2", "LFFBC5", "LFMBR1", "LFBB5"] }, { id: 4, date: "17-02-2016", valname: ["LEEE5", "LFFFE8", "BGTT5", "LFHT9"] }],
search = "LFBB",
result = data.filter(({ valname }) => valname.some(n => n.startsWith(search)));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
有了一个搜索值数组,您还需要迭代这个数组。
const
data = [{ id: 1, date: "18-02-2016", valname: ["LFBBR1", "LFFFE5", "LFMBR1", "LFBB5"] }, { id: 2, date: "19-02-2016", valname: ["LFFF6", "EESF7", "LFMBR1", "LFGG3"] }, { id: 3, date: "14-02-2016", valname: ["LFBBL2", "LFFBC5", "LFMBR1", "LFBB5"] }, { id: 4, date: "17-02-2016", valname: ["LEEE5", "LFFFE8", "BGTT5", "LFHT9"] }],
search = ["LFBB", "LEE"],
result = data.filter(({ valname }) =>
valname.some(n =>
search.some(s => n.startsWith(s))
)
);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
var search = "LFBB";
var data = [
{ id: 1, date: "18-02-2016", valname: ["LFBBR1", "LFFFE5", "LFMBR1", "LFBB5"] },
{ id: 2, date: "19-02-2016", valname: ["LFFF6", "EESF7", "LFMBR1", "LFGG3"] },
{ id: 3, date: "14-02-2016", valname: ["LFBBL2", "LFFBC5", "LFMBR1", "LFBB5"] },
{ id: 4, date: "17-02-2016", valname: ["LEEE5", "LFFFE8", "BGTT5", "LFHT9"] },
];
output=data.filter(x=>x.valname.findIndex(v=>v.startsWith(search))>-1);
console.log(JSON.stringify(output, null, 4));
将生成输出
[
{
"id": 1,
"date": "18-02-2016",
"valname": [
"LFBBR1",
"LFFFE5",
"LFMBR1",
"LFBB5"
]
},
{
"id": 3,
"date": "14-02-2016",
"valname": [
"LFBBL2",
"LFFBC5",
"LFMBR1",
"LFBB5"
]
}
]
我有以下对象 table :
var search = ["LFBB"];
var data = [
{ id: 1, date: "18-02-2016", valname: ["LFBBR1", "LFFFE5", "LFMBR1", "LFBB5"] },
{ id: 2, date: "19-02-2016", valname: ["LFFF6", "EESF7", "LFMBR1", "LFGG3"] },
{ id: 3, date: "14-02-2016", valname: ["LFBBL2", "LFFBC5", "LFMBR1", "LFBB5"] },
{ id: 4, date: "17-02-2016", valname: ["LEEE5", "LFFFE8", "BGTT5", "LFHT9"] },
];
var search = "LFBB"
如果“valname”的值与“search”的值匹配,我想过滤数据
如果 search = "LFBB" 过滤器应该 return 以下结果:
筛选后的结果:
data = [
{ id: 1, date: "18-02-2016", valname: ["LFBBR1", "LFFFE5", "LFMBR1", "LFBB5"]},
{ id: 3, date: "14-02-2016", valname: ["LFBBL2", "LFFBC5", "LFMBR1", "LFBB5"]}
],
我尝试使用
var startsWithN = data.((data) => data.startsWith(source));
但是没用
感谢您的帮助
您需要迭代 valname
并检查是否以所需字符串开头。
const
data = [{ id: 1, date: "18-02-2016", valname: ["LFBBR1", "LFFFE5", "LFMBR1", "LFBB5"] }, { id: 2, date: "19-02-2016", valname: ["LFFF6", "EESF7", "LFMBR1", "LFGG3"] }, { id: 3, date: "14-02-2016", valname: ["LFBBL2", "LFFBC5", "LFMBR1", "LFBB5"] }, { id: 4, date: "17-02-2016", valname: ["LEEE5", "LFFFE8", "BGTT5", "LFHT9"] }],
search = "LFBB",
result = data.filter(({ valname }) => valname.some(n => n.startsWith(search)));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
有了一个搜索值数组,您还需要迭代这个数组。
const
data = [{ id: 1, date: "18-02-2016", valname: ["LFBBR1", "LFFFE5", "LFMBR1", "LFBB5"] }, { id: 2, date: "19-02-2016", valname: ["LFFF6", "EESF7", "LFMBR1", "LFGG3"] }, { id: 3, date: "14-02-2016", valname: ["LFBBL2", "LFFBC5", "LFMBR1", "LFBB5"] }, { id: 4, date: "17-02-2016", valname: ["LEEE5", "LFFFE8", "BGTT5", "LFHT9"] }],
search = ["LFBB", "LEE"],
result = data.filter(({ valname }) =>
valname.some(n =>
search.some(s => n.startsWith(s))
)
);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
var search = "LFBB";
var data = [
{ id: 1, date: "18-02-2016", valname: ["LFBBR1", "LFFFE5", "LFMBR1", "LFBB5"] },
{ id: 2, date: "19-02-2016", valname: ["LFFF6", "EESF7", "LFMBR1", "LFGG3"] },
{ id: 3, date: "14-02-2016", valname: ["LFBBL2", "LFFBC5", "LFMBR1", "LFBB5"] },
{ id: 4, date: "17-02-2016", valname: ["LEEE5", "LFFFE8", "BGTT5", "LFHT9"] },
];
output=data.filter(x=>x.valname.findIndex(v=>v.startsWith(search))>-1);
console.log(JSON.stringify(output, null, 4));
将生成输出
[
{
"id": 1,
"date": "18-02-2016",
"valname": [
"LFBBR1",
"LFFFE5",
"LFMBR1",
"LFBB5"
]
},
{
"id": 3,
"date": "14-02-2016",
"valname": [
"LFBBL2",
"LFFBC5",
"LFMBR1",
"LFBB5"
]
}
]