簡體   English   中英

分離出對象內部的對象數組(JavaScript)

[英]seperate out an array of objects inside an object (Javascript)

我有一個數據對象。 如果我做console.log(data),這是輸出。

Object {Info: Array[3]}
  > Info: Array[3]
     >[0]: Object
           name: 'Alex'
           sex: 'Male'
           new_joinee: 0
     >[1]: Object
           name: 'Anna'
           sex: 'female'
           new_joinee: 1
     >[2]: Object
           name: 'lester'
           sex: 'Male'
           new_joinee: 1

現在,如果我要訪問new_joinee,則必須輸入以下內容。

data.Info[0].new_joinee 
data.Info[2].sex

這里僅舉幾個例子。 我想消除這一點,而是只需輸入即可獲取輸出

Info[0].new_joinee
Info[2].sex

有人可以讓我知道如何實現這一目標。 (由亞歷山大回答)

我對此有一個查詢。 因為,我們可以看到new_joinee為0或1。我希望它對0為false,對1為true。因此,新數據應如下所示。

Info: Array[3]
 >[0]: Object
       name: 'Alex'
       sex: 'Male'
       new_joinee: false
 >[1]: Object
       name: 'Anna'
       sex: 'female'
       new_joinee: true
 >[2]: Object
       name: 'lester'
       sex: 'Male'
       new_joinee: true

我需要動態地做到這一點。 有沒有辦法實現這一目標?

您可以將對象屬性分配給變量( var Info = data.Info;

 var data = { Info: [ { name: 'Alex', sex: 'Male', new_joinee: 0 }, { name: 'Anna', sex: 'female', new_joinee: 1 } ] }; var Info = data.Info; console.log(Info[0].name); console.log(Info[0].new_joinee); console.log(Info[0].sex); console.log(Info[1].name); console.log(Info[1].new_joinee); console.log(Info[1].sex); 

Javascript數組通過引用 分配 因此,如果您只是聲明一個新變量並分配所需的屬性

var info = data.Info;

您可以直接使用該對象的原始屬性的引用。

console.log(info[2].name,'is',info[2].sex);

對於第二個問題, .map()是您的朋友

var info=data.Info.map(function(element){
 element.new_joinee=(element.new_joinee!=0);
 return element;
});

請注意,您已更改了語義。 現在, info是數組的副本 ,而不是引用。 即使它包含的對象仍然是對原始對象的引用。

你可以這樣做

   var info = data.Info;
   info.map(function(element){
     element.new_joinee=(element.new_joinee!=0);
     return element;
   });

在這種情況下, infodata.Info是對同一數組的引用, .map()創建的副本將被丟棄。 但是,由於對象是對相同對象的引用,因此對象屬性的更改會反映在原始數組中。

暫無
暫無

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

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