将一个对象数组展平为单个数组

3

我有一个带动态键的对象数组

response = [{"1": 1}, {"2": 1}, {"3": 1}, {"4": 0}, {"5": 0}];

我想把这个对象数组压扁成一个单一的数组。
Output = [1, 1, 1, 0, 0]

我尝试了以下操作:

const test2 = this.response.map(obj => {
    Object.keys(obj).map(function(key){
        return obj[key]
    })
});

const test = this.response.reduce(function(prev, curr){
    console.log(curr)
    return (curr) ? prev.concat(curr): prev;
},[]);
4个回答

7
你只需要使用map和object.values。

response = [{"1": 1}, {"2": 1}, {"3": 1}, {"4": 0}, {"5": 0}]
const vals = response.map(o => Object.values(o)[0])

console.log(vals)


在图表中使用时会出现“{} []”类型无法分配给“number []”类型的错误,但在概念上却可以正常工作。 - Yzak
不知道为什么以上代码会出现那个错误。 - epascarello

5
您可以使用.concat().map()方法:

let data =   [{"1": 1}, {"2": 1}, {"3": 1}, {"4": 0}, {"5": 0}];
      
let result = [].concat(...data.map(Object.values));

console.log(result);


1
使用 reduce 和 for..in 循环遍历对象。

let response = [{
    "1": 1
  },
  {
    "2": 1
  },
  {
    "3": 1
  },
  {
    "4": 0
  },
  {
    "5": 0
  }
]

let k = response.reduce(function(acc, curr) {
  for (let keys in curr) {
    acc.push(curr[keys])

  }
  return acc;
}, [])
console.log(k)


1

response = [{"1": 1},{"2": 1},{"3": 1},{"4": 0},{"5": 0}]

var newArray = []
for (element of response) {
  Object.keys(element).map(key => {
    newArray.push(element[key])
  })
}


console.log(newArray)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接