簡體   English   中英

如何將對象中的數組值附加為屬性和值?

[英]How to append array values in an object as property and value?

遍歷數組編號,並將每個編號(2、4、5、37、0)作為對象numbers_duplicates的屬性。 每個屬性的值應為該數字乘以2。 (首先開始創建空對象,然后再開始添加屬性和值)。

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 );}

我該如何解決這個問題?

在這里,你去隊友!

  let arr = [2, 4, 5, 37, 0]; let obj = {}; arr.forEach((x) => { obj[x] = x*2 }); console.log(obj); 

要獲取或設置對象屬性,可以使用方括號表示法 這是使用您編寫的基本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;} 

您需要使用一個對象來執行此操作,一個對象由鍵,值對組成。

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

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

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;
}

您可能要考慮一張地圖。 這是專門為您所需目的而制作的特殊對象。 它有很多類似數組的方法來處理這類對象。 請看看地圖

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

 var numbers = [2, 4, 5, 37, 0]; var duplicate_numbers = {}; var result = numbers.forEach(num => { duplicate_numbers[num] = num * 2 }); console.log(duplicate_numbers); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM