如何循环遍历 JavaScript 对象中的相似键值对 (a0,a1,a2) 并生成一个没有键 (a) 中数字的新数组?
How do I loop through similar key value pairs(a0,a1,a2) in JavaScript object and generate a new array without the number in the key(a)?
我有什么
1.keys: 相似键名(如a0,a1,a2)
2.obj: 一个对象中有很多相似的键值对
3.number: 相似键值对在obj1)中循环的次数
4.arr: key中没有数字的数组(只保留"a", 没有"a0","a1","a2")
p.s。 "aa","bb","cc" 是示例,值可以是任何值
let keys = ["javascript","java","python","php"];
let number = 3;
let obj = {
javascript0:"a",java0:"b",python0:"c",php0:"d",
javascript1:"aa",java1:"bb",python1:"cc",php1:"dd",
javascript2:"aaa",java2:"bbb",python2:"ccc",php2:"ddd",
}
我想要的
let arr = [
{javascript:"a",java:"b",python:"c",php:"d"},
{javascript:"aa",java:"bb",python:"cc",php:"dd"},
{javascript:"aaa",java:"bbb",python:"ccc",php:"ddd"}
]
如何获取数组?
有几种方法可以做到这一点。在 函数式编程 方式中,可以使用 Array.from
和 Object.fromEntries
:
来完成
let keys = ["javascript","java","python","php"];
let number = 3;
let obj1 = {
javascript0:"a0",java0:"b0",python0:"c0",php0:"d0",
javascript1:"a1",java1:"b1",python1:"c1",php1:"d1",
javascript2:"a2",java2:"b2",python2:"c2",php2:"d2",
}
let arr = Array.from({length: number}, (_, i) =>
Object.fromEntries(keys.map(key => [key, obj1[key + i]]))
);
console.log(arr);
let keys = ["javascript", "java", "python", "php"];
let obj = {
javascript0: "a0",
java0: "b0",
python0: "c0",
php0: "d0",
javascript1: "a1",
java1: "b1",
python1: "c1",
php1: "d1",
javascript2: "a2",
java2: "b2",
python2: "c2",
php2: "d2",
};
let result = [];
let number = 3;
for (i = 0; i < number; i++) {
let _r = {};
keys.forEach((item) => {
if (obj.hasOwnProperty(`${item}${i}`)) {
_r[item] = obj[`${item}${i}`];
}
});
result.push(_r);
}
console.log(result);
我有什么
1.keys: 相似键名(如a0,a1,a2)
2.obj: 一个对象中有很多相似的键值对
3.number: 相似键值对在obj1)中循环的次数
4.arr: key中没有数字的数组(只保留"a", 没有"a0","a1","a2")
p.s。 "aa","bb","cc" 是示例,值可以是任何值
let keys = ["javascript","java","python","php"];
let number = 3;
let obj = {
javascript0:"a",java0:"b",python0:"c",php0:"d",
javascript1:"aa",java1:"bb",python1:"cc",php1:"dd",
javascript2:"aaa",java2:"bbb",python2:"ccc",php2:"ddd",
}
我想要的
let arr = [
{javascript:"a",java:"b",python:"c",php:"d"},
{javascript:"aa",java:"bb",python:"cc",php:"dd"},
{javascript:"aaa",java:"bbb",python:"ccc",php:"ddd"}
]
如何获取数组?
有几种方法可以做到这一点。在 函数式编程 方式中,可以使用 Array.from
和 Object.fromEntries
:
let keys = ["javascript","java","python","php"];
let number = 3;
let obj1 = {
javascript0:"a0",java0:"b0",python0:"c0",php0:"d0",
javascript1:"a1",java1:"b1",python1:"c1",php1:"d1",
javascript2:"a2",java2:"b2",python2:"c2",php2:"d2",
}
let arr = Array.from({length: number}, (_, i) =>
Object.fromEntries(keys.map(key => [key, obj1[key + i]]))
);
console.log(arr);
let keys = ["javascript", "java", "python", "php"];
let obj = {
javascript0: "a0",
java0: "b0",
python0: "c0",
php0: "d0",
javascript1: "a1",
java1: "b1",
python1: "c1",
php1: "d1",
javascript2: "a2",
java2: "b2",
python2: "c2",
php2: "d2",
};
let result = [];
let number = 3;
for (i = 0; i < number; i++) {
let _r = {};
keys.forEach((item) => {
if (obj.hasOwnProperty(`${item}${i}`)) {
_r[item] = obj[`${item}${i}`];
}
});
result.push(_r);
}
console.log(result);