gpt4 book ai didi

JavaScript 对象分组和过滤

转载 作者:行者123 更新时间:2023-12-01 00:03:25 25 4
gpt4 key购买 nike

如何使用过滤器将键以 0x 结尾的所有字段分离到单独的对象/数组中。

也就是说,所有 00、01、02 必须过滤到单独的对象或数组中。

使用对象条目按索引分隔它,但当字段丢失时会失败。因此,这里的日期是动态的,即有时未输入某些字段。我想过滤是唯一的方法?

 {
"hotel00": "asdasd",
"adult00": "asdasd",
"child00": "asdasd",
"infant00": "asdasd",
"hotel01": "asdasd",
"adult01": "asdasd",
"child01": "asdasd",
"infant01": "asdas",
"hotel02": "asdasdas",
"adult02": "asdasd",
"child02": "asdasd",
"infant02": "asdasd",
"hotel10": "asdasd",
"adult10": "asdasd",
"child10": "asdsd",
"infant10": "asd",
"hotel11": "asdsd",
"adult11": "asd",
"child11": "asdsd",
"infant11": "asd",
"hotel12": "asdasd",
"adult12": "asdasd",
"child12": "asdasdasd",
"infant12": "asdsdasd",
}

输出

       {
"a": [
{
"hotel00": "asdasd",
"adult00": "asdasd",
"child00": "asdasd",
"infant00": "asdasd",
},
{
"hotel01": "asdasd",
"adult01": "asdasd",
"child01": "asdasd",
"infant01": "asdas",
},
{
"hotel02": "asdasdas",
"adult02": "asdasd",
"child02": "asdasd",
"infant02": "asdasd",
}
],
"b": [
{
"hotel10": "asdasd",
"adult10": "asdasd",
"child10": "asdsd",
"infant10": "asd",
},
{
"hotel11": "asdsd",
"adult11": "asd",
"child11": "asdsd",
"infant11": "asd",
},
{
"hotel12": "asdasd",
"adult12": "asdasd",
"child12": "asdasdasd",
"infant12": "asdsdasd",
}
]
}

最佳答案

希望这能解答您的问题

const obj =  {
"hotel00": "asdasd",
"adult00": "asdasd",
"child00": "asdasd",
"infant00": "asdasd",
"hotel01": "asdasd",
"adult01": "asdasd",
"child01": "asdasd",
"infant01": "asdas",
"hotel02": "asdasdas",
"adult02": "asdasd",
"child02": "asdasd",
"infant02": "asdasd",
"hotel10": "asdasd",
"adult10": "asdasd",
"child10": "asdsd",
"infant10": "asd",
"hotel11": "asdsd",
"adult11": "asd",
"child11": "asdsd",
"infant11": "asd",
"hotel12": "asdasd",
"adult12": "asdasd",
"child12": "asdasdasd",
"infant12": "asdsdasd",
}

const {a,b,c,d,e,f} = Object.keys(obj).reduce(({a,b,c,d,e,f}, val, index) => ({
a: /00\b(?<=\w)/.test(val) ? {...a, [val]:obj[val]} : a,
b: /01\b(?<=\w)/.test(val) ? {...b, [val]:obj[val]} : b,
c: /02\b(?<=\w)/.test(val) ? {...c, [val]:obj[val]} : c,
d: /10\b(?<=\w)/.test(val) ? {...d, [val]:obj[val]} : d,
e: /11\b(?<=\w)/.test(val) ? {...e, [val]:obj[val]} : e,
f: /12\b(?<=\w)/.test(val) ? {...f, [val]:obj[val]} : f,
}),{a:{},b:{},c:{},d:{},e:{},f:{}})

const results = {
a: [a,b,c],
b: [d,e,f]
};

console.log(results)

LE second example

const obj =  {
"hotel00": "asdasd",
"adult00": "asdasd",
"child00": "asdasd",
"infant00": "asdasd",
"hotel01": "asdasd",
"adult01": "asdasd",
"child01": "asdasd",
"infant01": "asdas",
"hotel02": "asdasdas",
"adult02": "asdasd",
"child02": "asdasd",
"infant02": "asdasd",
"hotel10": "asdasd",
"adult10": "asdasd",
"child10": "asdsd",
"infant10": "asd",
"hotel11": "asdsd",
"adult11": "asd",
"child11": "asdsd",
"infant11": "asd",
"hotel12": "asdasd",
"adult12": "asdasd",
"child12": "asdasdasd",
"infant12": "asdsdasd",
}

const result = Object.keys(obj).reduce((acc,val)=>{
['00','01','02','10','11','12'].forEach((item, index) => {
const x = index<3 ? 'a' : 'b';
const i = index<3 ? index : index-3;
acc[x][i] = val.substring(val.length-2) === item ? {...acc[x][i], [val]:obj[val]} : acc[x][i];
})
return acc;
},{a:[],b:[]})

console.log(result)

关于JavaScript 对象分组和过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60561055/

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