Skip to content

Latest commit

 

History

History

2794.Create Object from Two Arrays

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

English Version

题目描述

给定两个数组 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 = []
输出:{}
解释:没有键,因此返回一个空对象。

 

提示:

  • keysArr 和 valuesArr 都是有效的 JSON 数组
  • 2 <= JSON.stringify(keysArr).length, JSON.stringify(valuesArr).length <= 5 * 105
  • keysArr.length === valuesArr.length

解法

TypeScript

function createObject(keysArr: any[], valuesArr: any[]): Record<string, any> {
    const ans: Record<string, any> = {};
    for (let i = 0; i < keysArr.length; ++i) {
        const k = String(keysArr[i]);
        if (ans[k] === undefined) {
            ans[k] = valuesArr[i];
        }
    }
    return ans;
}

JavaScript

/**
 * @param {Array} keysArr
 * @param {Array} valuesArr
 * @return {Object}
 */
var createObject = function (keysArr, valuesArr) {
    const ans = {};
    for (let i = 0; i < keysArr.length; ++i) {
        const k = keysArr[i] + '';
        if (ans[k] === undefined) {
            ans[k] = valuesArr[i];
        }
    }
    return ans;
};