跳转至

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

 

提示:

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

解法

方法一

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
/**
 * @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;
};

评论

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy