名称不同时如何过滤数组保存到新数组中
我想过滤从表单中获得的数组数据。
var form = [
{name: "option_1", value: "A"},
{name: "code_1", value: "36743"}
{name: "option_2", value: "D"},
{name: "code_2", value: "36723"}
{name: "option_3", value: "C"},
{name: "code_3", value: "36543"}
{name: "option_4", value: "B"},
{name: "code_4", value: "36443"}
...
]
我想像这样按名称过滤数组
var option = [ "A", "D", "C", "B"]
var code = [36743, 36723, 36543, 36443]
但我不知道,因为属性名称中有一个数字
回答
您可以filter使用正则表达式形成数组,然后使用map函数选择所需的字段,如下所示:
var form = [
{name: "option_1", value: "A"},
{name: "code_1", value: "36743"},
{name: "option_2", value: "D"},
{name: "code_2", value: "36723"},
{name: "option_3", value: "C"},
{name: "code_3", value: "36543"},
{name: "option_4", value: "B"},
{name: "code_4", value: "36443"}
];
let options = form.filter(a => /option_d+/.test(a.name)).map(a => a.value);
let codes = form.filter(a => /code_d+/.test(a.name)).map(a => Number(a.value));
console.log(options, codes);