最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to format an Array of Arrays of Object in JS - Stack Overflow

programmeradmin4浏览0评论

I want to formatting this Array in a puted property in VueJS, but I have one problem in the moment to access to newArray, all of elements in one only array

getNewArray(){
const newArray = []
const = this.data.map(item =>{
    for(let i in item){
       newArray.push(item.value)
  }
return newArray
})
}
data:[
    [
    {idStatus: 2, value: '120'},
    {idStatus: 3, value: '130'},
    {idStatus: 4, value: '140'},
    {idStatus: 5, value: '150'}
    ],
    [
    {idStatus: 1, value: '160'},
    {idStatus: 2, value: '180'},
    {idStatus: 4, value: '10'},
    {idStatus: 5, value: '20'}
    ],
    [
    {idStatus: 3, value: '567'},
    {idStatus: 6, value: '234'},
    {idStatus: 9, value: '747'},
    {idStatus: 7, value: '789'}
    ],
    [
    {idStatus: 8, value: '340'},
    {idStatus: 5, value: '560'},
    {idStatus: 6, value: '120'},
    {idStatus: 2, value: '100'}
    ],
    [
    {idStatus: 1, value: '106'},
    {idStatus: 5, value: '345'},
    {idStatus: 7, value: '756'},
    {idStatus: 9, value: '946'}
    ]
    ]

The result that I want to obtain is this

    data:[
    [120,130,140,150],
    [160,180,10,20],
    [567,234,747,789],
    [340,560,120,100],
    [106,345,756,946]
    ]

I want to formatting this Array in a puted property in VueJS, but I have one problem in the moment to access to newArray, all of elements in one only array

getNewArray(){
const newArray = []
const = this.data.map(item =>{
    for(let i in item){
       newArray.push(item.value)
  }
return newArray
})
}
data:[
    [
    {idStatus: 2, value: '120'},
    {idStatus: 3, value: '130'},
    {idStatus: 4, value: '140'},
    {idStatus: 5, value: '150'}
    ],
    [
    {idStatus: 1, value: '160'},
    {idStatus: 2, value: '180'},
    {idStatus: 4, value: '10'},
    {idStatus: 5, value: '20'}
    ],
    [
    {idStatus: 3, value: '567'},
    {idStatus: 6, value: '234'},
    {idStatus: 9, value: '747'},
    {idStatus: 7, value: '789'}
    ],
    [
    {idStatus: 8, value: '340'},
    {idStatus: 5, value: '560'},
    {idStatus: 6, value: '120'},
    {idStatus: 2, value: '100'}
    ],
    [
    {idStatus: 1, value: '106'},
    {idStatus: 5, value: '345'},
    {idStatus: 7, value: '756'},
    {idStatus: 9, value: '946'}
    ]
    ]

The result that I want to obtain is this

    data:[
    [120,130,140,150],
    [160,180,10,20],
    [567,234,747,789],
    [340,560,120,100],
    [106,345,756,946]
    ]
Share Improve this question edited May 29, 2019 at 1:39 Jack Bashford 44.2k11 gold badges55 silver badges82 bronze badges asked May 29, 2019 at 1:30 Cesar ArmandoCesar Armando 231 gold badge1 silver badge4 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 2

Use map:

const data = [[{idStatus:2,value:'120'},{idStatus:3,value:'130'},{idStatus:4,value:'140'},{idStatus:5,value:'150'}],[{idStatus:1,value:'160'},{idStatus:2,value:'180'},{idStatus:4,value:'10'},{idStatus:5,value:'20'}],[{idStatus:3,value:'567'},{idStatus:6,value:'234'},{idStatus:9,value:'747'},{idStatus:7,value:'789'}],[{idStatus:8,value:'340'},{idStatus:5,value:'560'},{idStatus:6,value:'120'},{idStatus:2,value:'100'}],[{idStatus:1,value:'106'},{idStatus:5,value:'345'},{idStatus:7,value:'756'},{idStatus:9,value:'946'}]];
const res = data.map(e => e.map(({ value }) => value));
console.log(res);
.as-console-wrapper { max-height: 100% !important; top: auto; }

You should not use for .. in for array iteration #Ref

You can change your original code to this, by fixing following problems

  • You're pushing value to same newArray every-time whereas you have to create a new variable every-time inside map
  • You're not returning anything from your function

let data =[[{idStatus: 2, value: '120'},{idStatus: 3, value: '130'},{idStatus: 4, value: '140'},{idStatus: 5, value: '150'}],[{idStatus: 1, value: '160'},{idStatus: 2, value: '180'},{idStatus: 4, value: '10'},{idStatus: 5, value: '20'}],[{idStatus: 3, value: '567'},{idStatus: 6, value: '234'},{idStatus: 9, value: '747'},{idStatus: 7, value: '789'}],[{idStatus: 8, value: '340'},{idStatus: 5, value: '560'},{idStatus: 6, value: '120'},{idStatus: 2, value: '100'}],[{idStatus: 1, value: '106'},{idStatus: 5, value: '345'},{idStatus: 7, value: '756'},{idStatus: 9, value: '946'}]]

function getNewArray(){
const final = data.map(item =>{
    const newArray = []
    for(let i of item){
       newArray.push(i.value)
    }
    return newArray
})
return final
}

 
console.log(getNewArray())

You can use map twice

let data = {data:[[{idStatus: 2, value: '120'},{idStatus: 3, value: '130'},{idStatus: 4, value: '140'},{idStatus: 5, value: '150'}],[{idStatus: 1, value: '160'},{idStatus: 2, value: '180'},{idStatus: 4, value: '10'},{idStatus: 5, value: '20'}],[{idStatus: 3, value: '567'},{idStatus: 6, value: '234'},{idStatus: 9, value: '747'},{idStatus: 7, value: '789'}],[{idStatus: 8, value: '340'},{idStatus: 5, value: '560'},{idStatus: 6, value: '120'},{idStatus: 2, value: '100'}],[{idStatus: 1, value: '106'},{idStatus: 5, value: '345'},{idStatus: 7, value: '756'},{idStatus: 9, value: '946'}]]}

function getNewArray(){
const final= data.data.map(val=> val.map(({value})=>value))
return final
}


console.log(getNewArray())

var data = [
    [
    {idStatus: 2, value: '120'},
    {idStatus: 3, value: '130'},
    {idStatus: 4, value: '140'},
    {idStatus: 5, value: '150'}
    ],
    [
    {idStatus: 1, value: '160'},
    {idStatus: 2, value: '180'},
    {idStatus: 4, value: '10'},
    {idStatus: 5, value: '20'}
    ],
    [
    {idStatus: 3, value: '567'},
    {idStatus: 6, value: '234'},
    {idStatus: 9, value: '747'},
    {idStatus: 7, value: '789'}
    ],
    [
    {idStatus: 8, value: '340'},
    {idStatus: 5, value: '560'},
    {idStatus: 6, value: '120'},
    {idStatus: 2, value: '100'}
    ],
    [
    {idStatus: 1, value: '106'},
    {idStatus: 5, value: '345'},
    {idStatus: 7, value: '756'},
    {idStatus: 9, value: '946'}
    ]
]

function getNewArray() {
    //convert string to int
    return data.map(item => item.map(v => parseInt(v.value)))
}
let newArray = getNewArray();

console.log(newArray);
console.log(JSON.stringify(newArray));

print:[[120,130,140,150], [160,180,10,20],[567,234,747,789],[340,560,120,100],[106,345,756,946]]

发布评论

评论列表(0)

  1. 暂无评论