簡體   English   中英

迭代具有條件的對象數組

[英]Iterate over Array of Objects with Conditions

我的對象數組如下所示:

const categories = [{
  id: 1,
  name: 'level 1'
}, {
  id: 2,
  name: 'level 2'
}, {
  id: 3,
  name: 'level 3'
}];

我想動態迭代這個 category 數組並將name屬性輸出為字符串,除數組中的第一個對象外,用逗號分隔

const output = 'level 2, level 3';

類別可能包含多個對象。

const categories = [{
  id: 1,
  name: 'level 1'
}, {
  id: 2,
  name: 'level 2'
}, {
  id: 3,
  name: 'level 3'
}, ..., ..., ...];

但是,重要的是不輸出第一個對象

const categories = [{id: 1, name: 'level 1'}];
const output = '';

您可以通過結合使用破壞賦值和擴展運算符來排除第一個元素

 const categories = [ { id: 1, name: 'level 1' }, { id: 2, name: 'level 2' }, { id: 3, name: 'level 3' } ] const [first, ...rest] = categories const res = rest.map(cat => cat.name).join(', ') console.log(res)

這很簡單

 const getNames = arr => arr.map(item => item.name).slice(1).join(", "); // or slice first, map later const categories1 = [{ id: 1, name: 'level 1' }, { id: 2, name: 'level 2' }, { id: 3, name: 'level 3' }]; const categories2 = [{ id: 1, name: 'level 1' }]; console.log("1:", getNames(categories1)) console.log("2:", getNames(categories2))

這可以通過多種方式完成。 然而,使用Array.prototype.map()結合Array.prototype.join()Array.prototype.slice()是最簡單的方法。

const categories = [
  { id: 1, name: 'level 1' },
  { id: 2, name: 'level 2' },
  { id: 3, name: 'level 3' }
];

categories.slice(1).map(category => category.name).join(', ');

聚苯乙烯

  • 首先使用 slice 將創建一個從索引 1(第二個對象)開始的新數組
  • 使用 map 將使用數組中所有對象的“name”屬性值填充新數組。
  • 最后,使用 join 會將數組轉換為一個字符串,該字符串由數組中的所有值組成,並用括號之間提供的值分隔。

 const categories = [{ id: 1, name: 'level 1' }, { id: 2, name: 'level 2' }, { id: 3, name: 'level 3' }]; const output = categories.reduce((ans, v, i) => { return i === 1 ? v.name : (ans + ',' + v.name) }); console.log(output)

暫無
暫無

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

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