I have two datas. What I want to do is to check
(1)each contents value starts with one of categories.class_cd
(2)each contents value's length is categories.class_cd + 2
const contents = [
"010101",
"010101",
"010301",
"0103",
"01",
"01",
"01400201",
"01400201",
"010103",
"0118"
]
const categories = [
{
"class_cd": "0101",
"name": "A",
},
{
"class_cd": "0103",
"name": "B",
},
{
"class_cd": "0107",
"name": "C",
},
{
"class_cd": "0109",
"name": "D",
},
{
"class_cd": "0112",
"name": "E",
},
{
"class_cd": "0117",
"name": "F",
},
]
I want to get another array datas like below.
const categoriesNew =[
{
"class_cd": "0101",
"name": "A",
},
{
"class_cd": "0103",
"name": "B",
},
]
How can I sort like this??? I tried to use filter or map but it didn't work well.
If I understand your question, you can do something like this:
let res = categories.filter(category => {
return contents.find(content => content.includes(category.class_cd) || parseInt(content) === parseInt(category.class_cd) + 2)
})
const contents = [
"010101",
"010101",
"010301",
"0103",
"01",
"01",
"01400201",
"01400201",
"010103",
"0118"
]
const categories = [
{
"class_cd": "0101",
"name": "A",
},
{
"class_cd": "0103",
"name": "B",
},
{
"class_cd": "0107",
"name": "C",
},
{
"class_cd": "0109",
"name": "D",
},
{
"class_cd": "0112",
"name": "E",
},
{
"class_cd": "0117",
"name": "F",
},
]
let res = categories.filter(category => {
return contents.find(content => content.includes(category.class_cd) || parseInt(content) === parseInt(category.class_cd) + 2)
})
console.log(res)