开发者问题收集

如何将数组值作为属性和值附加到对象中?

2019-05-19
1694

遍历数组 numbers,并将每个数字 (2、4、5、37、0) 作为对象 numbers_duplicates 的属性。每个属性的值应为该数字乘以二。(首先创建空对象,然后再开始添加属性和值)。

var numbers= [2, 4, 5, 37, 0]
var duplicate_numbers = {} 

// 稍后应为:{ 0: 0, 2: 4, 4: 8, 5: 10, 37: 74}

enter code here for (var i = 0; i < numbers.length; ++i) {
duplicate_numbers.push( numbers[i]*2 );
    duplicate_numbers.push( i );}

如何解决这个问题?

3个回答
let arr = [2, 4, 5, 37, 0];
    let obj = {};

    arr.forEach((x) => {
       obj[x] = x*2
    });
    
    console.log(obj);
Aleksandar Hristov
2019-05-19

要获取或设置对象属性,您可以使用 括号表示法 。以下是使用您编写的基本 for 循环的版本。

var numbers = [2, 4, 5, 37, 0];
var duplicate_numbers = {};

for (var i = 0; i < numbers.length; i++)
{
    duplicate_numbers[numbers[i]] = numbers[i] * 2;
}

console.log(duplicate_numbers);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

或者,您也可以按以下方式使用 Array.reduce()

var numbers = [2, 4, 5, 37, 0];

var duplicate_numbers = numbers.reduce((acc, n) => (acc[n] = 2 * n, acc), {});

console.log(duplicate_numbers);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
Shidersz
2019-05-19

您需要使用对象来执行此操作,对象由键、值对组成。

const numbers_duplicates = {};
const numbers =  [2, 4, 5, 37, 0];

numbers.forEach(number => { numbers_duplicates[number] = number * 2 });

Ramon Portela
2019-05-19