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

时间:2019-05-19 21:06:03

标签: javascript arrays object

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

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

//以后应该是这样的{0:0,2: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 );}

如何解决此问题?

6 个答案:

答案 0 :(得分:2)

您在这里成为队友!

    let arr = [2, 4, 5, 37, 0];
    let obj = {};

    arr.forEach((x) => {
       obj[x] = x*2
    });
    
    console.log(obj);

答案 1 :(得分:1)

要获取或设置对象属性,可以使用bracket notation。这是使用您编写的基本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;}

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

const numbers = [2, 4, 5, 37, 0] ;
const duplicateNumbers = {};
const numbersSorted = numbers.sort((a, b) => a - b);

for (let i = 0; i < numbersSorted.length; i++) {
  duplicateNumbers[numbersSorted[i]] = numbersSorted[i] * 2;
}

答案 4 :(得分:0)

您可能要考虑一张地图。这是专门为您所需目的而制作的特殊对象。 它有很多类似数组的方法来处理这类对象。 请看看Map

var numbers= [2, 4, 5, 37, 0];
var duplicate_numbers = new Map();
numbers.forEach((val)=> {
    duplicate_numbers.set(val, val*2);
})

答案 5 :(得分:-1)

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

var result = numbers.forEach(num => {
  duplicate_numbers[num] = num * 2
});

console.log(duplicate_numbers);