【问题标题】:How to create json object out of two arrays [duplicate]如何从两个数组中创建json对象[重复]
【发布时间】:2020-12-06 11:26:21
【问题描述】:

有两个数组:

let values = ["52", "71", "3", "45", "20", "12", "634", "21"];
let names = ["apple", "orange", "strawberry", "banana", "coconut", "pineapple", "watermelon", "plum"];

如何创建如下对象:

{
    "apple": 52,
    "orange": 71,
    "strawberry": 3,
    "banana": 45,
    "coconut": 20,
    "pineapple": 12,
    "watermelon": 634,
    "plum": 21
}

我尝试使用Object.assign,但这只会覆盖值。

Object.assign<any, any>(names, values);

Object.defineProperties 不能正常工作,或者 - 更有可能 - 我不知道如何使用它们。

编辑

我试过了

    let temp = {};

    names.forEach((item, index) => {
        console.log('item: ', item);
        console.log('index: ', index);
        console.log('temp[item]: ', temp[item]);
        console.log('values[index]: ', values[index]);
        temp[item] = values[index];
        console.log(names);
    });

但这是我得到的

【问题讨论】:

    标签: javascript arrays json typescript


    【解决方案1】:

    创建一个新的结果对象。向这个对象添加一个新对象的名称和相应的值。

    已编辑: 因为您的值数组中的所有元素都是字符串,而结果对象中的值是整数,所以我使用 parseInt 进行转换。

    注意: 使用变量 name 不是很好,因为如果你想使用类似 name.forEachname 之类的东西,你会得到 TypeError .map。好像是保留字之类的。

    let values = ["52", "71", "3", "45", "20", "12", "634", "21"];
    let names = ["apple", "orange", "strawberry", "banana", "coconut", "pineapple", "watermelon", "plum"];
    
    let temp = {};
    names.forEach((elem, index) => { temp[elem]=parseInt(values[index]) });
    
    names.forEach((item, index) => {
      console.log('item: ', item);
      console.log('index: ', index);
      console.log('temp[item]: ', temp[item]);
      console.log('values[index]: ', values[index]);
      temp[item] = values[index];
      console.log(names);
    });

    【讨论】:

    • 我试过这个解决方案,但这对我不起作用。我更新了问题,请看看,让我知道你的想法
    • 我编辑了我的解决方案:现在结果中的值是整数而不是字符串。
    • 我明白,但还有其他事情:因为我在问题编辑中的temp 是你的result,当我尝试到达result[elem] 时,结果发现它是未定义的。我不知道为什么。
    • 免责声明:我在这里使用的数组名称只是为了简化操作,在实际应用中它们的名称不同;)
    • 是的,因为您使用 temp 并且您没有为它设置任何属性。因此,您必须在输出循环和创建的对象中使用相同的变量。我通过将结果重命名为 temp 来更改代码,一切正常。看上面的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 2021-12-24
    • 1970-01-01
    相关资源
    最近更新 更多