亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何識別數組 <{}> 的 javascript 對象字段的類型

如何識別數組 <{}> 的 javascript 對象字段的類型

慕后森 2023-01-06 16:20:03
我有一個 JavaScript 對象,它來自一個可能包含嵌套字段的請求,我需要識別屬于 Array<{}> 類型的字段,我需要單獨迭代該字段,但在 javascript 中我無法實現這一點。任何人都請建議我根據字段類型查找字段的解決方案。樣本對象const obj = {name:'jane', age: 22,interested_books:[{book_name:'xxx', author_name:'yyy'}, {book_name:'aaa', author_name:'zzz'}],hobbies:['reading', 'football'],address:{street_name:'dace street', door_no:12}}在這些字段中,我需要迭代一個數組<{}>的字段(即interested_books)
查看完整描述

4 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

使用 Object.entires()andisArray檢查它是否是一個數組


obj = {

  name: "jane",

  age: 22,

  interested_books: [

    { book_name: "xxx", author_name: "yyy" },

    { book_name: "aaa", author_name: "zzz" },

  ],

  hobbies: ["reading", "football"],

  address: { street_name: "dace street", door_no: 12 },

};

function getArrWithOb(obj) {

  return Object.fromEntries(

Object.entries(obj).filter((o) => {

  if (Array.isArray(o[1])) {

    if (o[1].every((ob) => typeof ob == "object")) {

      return o;

    }

  }

})

  );

}

console.log(getArrWithOb(obj));


從評論看來你想要返回的是你可以使用的屬性的名稱reduce


obj = { name: "jane", age: 22, interested_books: [ { book_name: "xxx", author_name: "yyy" }, { book_name: "aaa", author_name: "zzz" }, ], hobbies: ["reading", "football"], address: { street_name: "dace street", door_no: 12 }, };

function getArrWithOb(obj) {

  return Object.entries(obj).reduce((r, o) => {

    if (Array.isArray(o[1])) {

      if (o[1].every((ob) => typeof ob == "object")) {

        r.push(o[0]);

      }

    }

    return r;

  }, []);

}

console.log(getArrWithOb(obj));


查看完整回答
反對 回復 2023-01-06
?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

使用isArray檢查值是否為數組


const obj = {

  name: 'jane',

  age: 22,

  interested_books: [{

    book_name: 'xxx',

    author_name: 'yyy'

  }, {

    book_name: 'aaa',

    author_name: 'zzz'

  }],

  hobbies: ['reading', 'football'],

  address: {

    street_name: 'dace street',

    door_no: 12

  }

}


for (let keys in obj) {

  if (Array.isArray(obj[keys])) {

    obj[keys].forEach(item => console.log(item))

  }

}


查看完整回答
反對 回復 2023-01-06
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

const obj = {

  name: 'jane',

  age: 22,

  interested_books: [{

    book_name: 'xxx',

    author_name: 'yyy'

  }, {

    book_name: 'aaa',

    author_name: 'zzz'

  }],

  hobbies: ['reading', 'football'],

  address: {

    street_name: 'dace street',

    door_no: 12

  }

}


for (const key in obj) {

  if (obj[key] instanceof Array) {

    console.log('I am array', key);

    const isArrayOfObject = obj[key].every(item => typeof item === "object");

    if (isArrayOfObject) {

      // your_logic_here

    }

  }

}


查看完整回答
反對 回復 2023-01-06
?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

試試下面的功能。這是為了獲取對象中的數組項。


const obj = {

  name: 'jane',

  age: 22,

  interested_books: [{ book_name: 'xxx', author_name: 'yyy' }, { book_name: 'aaa', author_name: 'zzz' }],

  hobbies: ['reading', 'football'],

  address: { street_name: 'dace street', door_no: 12 }

};


const getArraysFromObject = obj => {

  const results = {};

  Object.keys(obj).map(field => {

    if (Array.isArray(obj[field])) {

      results[field] = obj[field];

    }

  });

  return results;

};


console.log(results); 

// {

//   "interested_books": [

//     { "book_name": "xxx", "author_name": "yyy" },

//     { "book_name": "aaa", "author_name": "zzz" }

//   ],

//   "hobbies": ["reading", "football"]

// }


查看完整回答
反對 回復 2023-01-06
  • 4 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號