簡體   English   中英

如何從JavaScript的索引屬性獲取值?

[英]How to get value from index property in javascript?

這是我的代碼:

const array1 = [{a: 'abc', b: 'cd'}, {a: 'abc', b: 'xyz'}, {a: 'abc', 
b: 'mno'}];
let obj = array1.reduce(function(result, item, index){
    result[index] = item
  return result;
}, {});

let dealId = 123;
let value = {};
let array2 = [];
for (var property in obj) {
   value[dealId] = array2.push(obj[property]);
}
console.log(value)

其輸出是Object { 123: 3 }

但是我想要,這就是我的期望。 Object { 123: [{a: 'abc', b: 'cd'}, {a: 'abc', b: 'xyz'}, {a: 'abc', b: 'mno'}] }

為什么我得到3而不是數組? 如何獲得數組?

為什么不使用單個鍵並將給定數組作為值來構建新對象?

對於對象,請使用計算出的屬性名稱

 const array = [{ a: 'abc', b: 'cd' }, { a: 'abc', b: 'xyz' }, { a: 'abc', b: 'mno' }], key = 123, object = { [key]: array }; console.log(object); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

Array.prototype.push返回數組的新長度,而不是數組本身。 您的循環將值1、2和3分配給相同的value[dealId]

相反,您可以將分配移到循環外:

for (var property in obj) {
   array2.push(obj[property]);
}
value[dealId] = array2;

或者,您可以簡單地使用Object.values

value[dealId] = Object.values(obj);

但是請注意,這沒有列出繼承的屬性。

您需要先添加到aaray中,然后創建對象

 const array1 = [{a: 'abc', b: 'cd'}, {a: 'abc', b: 'xyz'}, {a: 'abc', b: 'mno'}]; let obj = array1.reduce(function(result, item, index){ result[index] = item return result; }, {}); let dealId = 123; let value = {}; let array2 = []; for (var property in obj) { array2.push(obj[property]); } value[dealId] = array2; console.log(value); 

 const array1 = [{a: 'abc', b: 'cd'}, {a: 'abc', b: 'xyz'}, {a: 'abc', b: 'mno'}]; let obj = array1.reduce(function(result, item, index){ result[index] = item return result; }, {}); let dealId = 123; let value = {}; let array2 = []; for (var property in obj) { array2.push(obj[property]); } value[dealId] = array2; console.log(value) 

為您的新obj屬性(id)分配所需的數組:


  
 
  
  
    let arr = [{a: 'abc', b: 'cd'}, {a: 'abc', b: 'xyz'}, {a: 'abc', 
    b: 'mno'}];
    let newObj = {};
    let id = 123;

    newObj[id] = arr;
    console.log(newObj);

暫無
暫無

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

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