鍍金池/ 問答/HTML/ js 數(shù)組對象處理

js 數(shù)組對象處理

[
{backupType: "全備", weekCycle: 1, weekDay: 0, sequenceNumber: 1}
{backupType: "全備", weekCycle: 1, weekDay: 0, sequenceNumber: 2}
{backupType: "全備", weekCycle: 1, weekDay: 1, sequenceNumber: 2}
{backupType: "全備", weekCycle: 1, weekDay: 2, sequenceNumber: 3}
{backupType: "全備", weekCycle: 1, weekDay: 3, sequenceNumber: 3}
{backupType: "全備", weekCycle: 1, weekDay: 6, sequenceNumber: 3}
]

根據(jù)sequenceNumber,將數(shù)組分為三個部分,sequenceNumber一致的放在一塊

[
{backupType: "全備", weekCycle: 1, weekDay: 0, sequenceNumber: 1}
{backupType: "全備", weekCycle: 1, weekDay: [0,1], sequenceNumber: 2}
{backupType: "全備", weekCycle: 1, weekDay: [2,3,6], sequenceNumber: 3}
]
回答
編輯回答
刮刮樂

arr1=arr.filter((entity)=>{entity.sequenceNumber==1});
arr2=....
以此類推,不寫了

2018年7月4日 09:01
編輯回答
大濕胸

我的思路:循環(huán)兩次,外層拿到的對象作為參照對象,和內層循環(huán)到的對象依次做對比,找到一樣的就拿到它的weekDay值push給參照對象,然后刪除掉。

因為初始weekDay是number型,找到之后還要轉換成數(shù)組才行。

    var arr = [
        { weekDay: 0, sequenceNumber: 1 }, 
        { weekDay: 0, sequenceNumber: 2 }, 
        { weekDay: 1, sequenceNumber: 2 }, 
        { weekDay: 2, sequenceNumber: 3 }, 
        { weekDay: 3, sequenceNumber: 3 }, 
        { weekDay: 6, sequenceNumber: 3 }
    ];
    for(let i = 0; i < arr.length; i++) {
        arr.map((m, n) => {
            if (arr[i].sequenceNumber === m.sequenceNumber && i !== n) {
                // 將參照對象的weekDay轉換成數(shù)組
                arr[i].weekDay = [arr[i].weekDay]
                // 將該對象的weekDay值push到參照對象中,并刪除
                arr[i].weekDay.push(m.weekDay)
                arr.splice(n, 1)
            }
        })
    }
    
    console.log(arr)
2018年8月27日 21:36
編輯回答
孤毒

遍歷數(shù)組,然后根據(jù)sequenceNumber的值push到不同的數(shù)組里面。

2018年2月27日 11:00
編輯回答
不歸路
let data = [
  {backupType: "全備", weekCycle: 1, weekDay: 0, sequenceNumber: 1},
  {backupType: "全備", weekCycle: 1, weekDay: 0, sequenceNumber: 2},
  {backupType: "全備", weekCycle: 1, weekDay: 1, sequenceNumber: 2},
  {backupType: "全備", weekCycle: 1, weekDay: 2, sequenceNumber: 3},
  {backupType: "全備", weekCycle: 1, weekDay: 3, sequenceNumber: 3},
  {backupType: "全備", weekCycle: 1, weekDay: 6, sequenceNumber: 3}
]

let cache = {}
data = data.filter(item => {
  let num = item.sequenceNumber
  let weekDay = item.weekDay
  let tmp = cache[num]

  if (tmp) {
    let tmpWeekDay = tmp.weekDay
    if (Array.isArray(tmpWeekDay)) {
      tmpWeekDay.push(weekDay)
    } else {
      tmp.weekDay = [tmpWeekDay, weekDay]
    }
    return false
  } else {
    cache[num] = item
    return true
  }
})
2017年3月16日 07:59