列表

详情


2794. 从两个数组中创建对象

给定两个数组 keysArr valuesArr,返回一个新的对象 objobj 中的每个键值对都来自 keysArr[i]valuesArr[i]

如果前面的索引中存在重复的键,则应该跳过该键值对。换句话说,只有第一次出现的键会被添加到对象中。

如果键不是字符串,则应通过调用 String() 方法将其转换为字符串。

 

示例 1:

输入:keysArr = ["a", "b", "c"], valuesArr = [1, 2, 3]
输出:{"a": 1, "b": 2, "c": 3}
解释:键 "a"、"b" 和 "c" 分别与值 1、2 和 3 配对。

示例 2:

输入:keysArr = ["1", 1, false], valuesArr = [4, 5, 6]
输出:{"1": 4, "false": 6}
解释:首先,将 arr1 中的所有元素转换为字符串。我们可以看到有两个 "1" 的出现。使用第一次出现 "1" 的关联值:4。

示例 3:

输入:keysArr = [], valuesArr = []
输出:{}
解释:没有键,因此返回一个空对象。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
/** * @param {Array} keysArr * @param {Array} valuesArr * @return {Object} */ var createObject = function(keysArr, valuesArr) { };

javascript 解法, 执行用时: 112 ms, 内存消耗: 54.7 MB, 提交时间: 2023-10-15 14:34:08

/**
 * @param {Array} keysArr
 * @param {Array} valuesArr
 * @return {Object}
 */
var createObject = function(keysArr, valuesArr) {
    const a = {}
    for(let i=0;i<keysArr.length;i++){
        if(Object.keys(a).includes(String(keysArr[i]))){
            continue;
        }
        a[keysArr[i]]=valuesArr[i]
    }
    return a
};

typescript 解法, 执行用时: 108 ms, 内存消耗: 55.3 MB, 提交时间: 2023-10-15 14:33:52

type JSONValue = null | boolean | number | string | JSONValue[] | { [key: string]: JSONValue };

function createObject(keysArr: any[], valuesArr: any[]): Record<string, any> {
    const obj = {};
    for (let i = 0; i < keysArr.length; i++) {
        const key = String(keysArr[i]);
        // 跳过重复的键
        if (!obj.hasOwnProperty(key)) {
            obj[key] = valuesArr[i];
        }
    }
    return obj;
};

typescript 解法, 执行用时: 108 ms, 内存消耗: 55.3 MB, 提交时间: 2023-10-15 14:33:04

type JSONValue = null | boolean | number | string | JSONValue[] | { [key: string]: JSONValue };

function createObject(keysArr: any[], valuesArr: any[]): Record<string, any> {
    let obj = {}
    keysArr.forEach((item,index)=>{
        if (!obj.hasOwnProperty(item+'')) {
            obj[item+''] = valuesArr[index]
        }
    })
    return obj
};

上一题