JavaScript 如何从两个数组创建对象
给定两个数组,任务是根据第一个数组中的键和第二个数组中的值创建一个对象。如果数组长度不相等或数组为空,则返回null。
我们可以使用以下几种方式来从两个数组创建对象:
- 使用for-each循环
- 使用Object.assign方法
- 使用reduce()方法
- 使用循环
- 使用object.fromEntries()方法
示例:
Input:
Array 1 => [1, 2, 3, 4]
Array 2 => ["ram", "shyam", "sita", "gita"]
Output:
{
1: "ram",
2: "shyam",
3: "sita",
4: "gita"
}
方法1:使用for-each循环
arr.forEach()方法会对数组的每个元素调用提供的函数。提供的函数可以对给定数组的元素执行任何操作。
示例: 在这个示例中,我们将使用Javascript的for-each循环。
let a = [1, 2, 3, 4];
let b = ["ram", "shyam", "sita", "gita"]
// Checking if the array lengths are same
// and none of the array is empty
function convertToObj(a, b) {
if (a.length != b.length ||
a.length == 0 ||
b.length == 0) {
return null;
}
let obj = {};
// Using the foreach method
a.forEach((k, i) =>
{ obj[k] = b[i] })
return obj;
}
console.log(convertToObj(a, b))
输出
{ '1': 'ram', '2': 'shyam', '3': 'sita', '4': 'gita' }
方法2:使用Object.assign方法
Object.assign()方法用于将一个或多个源对象的值和属性复制到目标对象中。
示例: 在这个示例中,我们将使用Javascript的Object.assign方法。
let a = [1, 2, 3, 4];
let b = ["ram", "shyam", "sita", "gita"]
// Checking if the array lengths are same
// and none of the array is empty
function convertToObj(a, b) {
if (a.length != b.length ||
a.length == 0 ||
b.length == 0) {
return null;
}
// Using Object.assign method
return Object.assign(...a.map((k, i) =>({
[k]: b[i] })))
}
console.log(convertToObj(a, b))
输出
{ '1': 'ram', '2': 'shyam', '3': 'sita', '4': 'gita' }
方法3:使用 reduce() 方法
在JavaScript中,arr.reduce()方法用于将数组减少为单个值,并对数组的每个值(从左到右)执行提供的函数,并将函数的返回值存储在累加器中。
示例: 在这个示例中,我们将使用JavaScript的reduce()方法。
let a = [1, 2, 3, 4];
let b = ["ram", "shyam", "sita", "gita"];
// Checking if the array lengths are same
// and none of the array is empty
function convertToObj(a, b) {
if (a.length != b.length ||
a.length == 0 ||
b.length == 0) {
return null;
}
// Using reduce() method
let object = a.reduce((acc, element, index) => {
return {
...acc,
[element]: b[index],
};
}, {});
return object;
}
console.log(convertToObj(a, b));
输出
{ '1': 'ram', '2': 'shyam', '3': 'sita', '4': 'gita' }
方法4:使用循环
这是使用循环从两个数组创建对象的基本方法。我们可以遍历其中一个数组,并使用循环索引访问两个数组的对应元素。
示例:
function createObject(keys, values) {
let result = {};
let length = Math.min(keys.length, values.length);
for (let i = 0; i < length; i++) {
result[keys[i]] = values[i];
}
return result;
}
// Example usage:
let a = [1, 2, 3, 4];
let b = ["ram", "shyam", "sita", "gita"];
let result = createObject(a, b);
console.log(result);
输出
{ '1': 'ram', '2': 'shyam', '3': 'sita', '4': 'gita' }
方法5:使用object.fromEntries()方法
Object.fromEntries()方法 在JavaScript中是一个标准内置对象,用于将一个键值对列表转换为一个对象。
示例:
function createObject(keys, values) {
const obj = Object.fromEntries(
keys.map((key, index) => [key, values[index]]),
);
return obj;
}
let a = [1, 2, 3, 4];
let b = ["ram", "shyam", "sita", "gita"];
let result = createObject(a, b);
console.log(result);
输出
{ '1': 'ram', '2': 'shyam', '3': 'sita', '4': 'gita' }
极客教程