遍历api数据数组以从对象中获取值

时间:2018-07-31 22:14:12

标签: javascript

我有这样的数据:

var data = [{one:1}, {two:2}, {three:3}]

我想遍历此数据,并获取键的值。我正在寻找的结果是123。

我尝试过:

var result = [];
for(i=0; i < data.length; i++){
    result.push(data[i]);
}

但是,它所要做的就是将对象推入变量数组'result'。

问题是,我如何获得数据IE 1、2和3的值?

5 个答案:

答案 0 :(得分:2)

可以。

var data = [{one:1}, {two:2}, {three:3}]
var result = [];

// read all items of data.
data.forEach(function(item) {

     // read all keys of item.
    Object.keys(item).forEach(function(key) {
        result.push(item[key]);
    });

});

或ES6

  const data = [{one:1}, {two:2}, {three:3}]
  let result = [];

  data.forEach(item => {
     result = [...result, ...Object.values(item)];
  });

答案 1 :(得分:2)

只需在某些浏览器(和nodejs 7)中添加它,就可以像这样使用Object.values()

var data = [{one:1}, {two:2}, {three:3}];

var values = data.map(o=>Object.values(o)[0]);

console.log(values);

答案 2 :(得分:1)

万一您的数据结构没有变化,也就是说,每个对象条目中只有一个键值对,请使用Array#map遍历条目,然后调用{ {3}}与当前object并使用[0]来获取实际的密钥(例如onetwothree并使用键返回object的值,然后您可以操纵需要result的方式:

ES6示例:

const data = [{one:1}, {two:2}, {three:3}];
const result = data.map(object => object[Object.keys(object)[0]]);

console.log(result);
console.log(result.join(','));
console.log(result.join(''));

ES5示例:

var data = [{one:1}, {two:2}, {three:3}];
var result = data.map(function (object) { 
  return object[Object.keys(object)[0]] 
});

console.log(result);
console.log(result.join(','));
console.log(result.join(''));

答案 3 :(得分:0)

像这样从对象获取值:

var result = [];
data.foreach((item) => {
    item.keys().foreach( (key) => {
        result.push(item[key]);
    });
});

当数组中已经有数据时,您只需完成

var dataString = result.join('');

此函数将数组中的所有值合并为一个字符串,并以给定的字符串作为分隔符。传递空白字符串使其不使用分隔符。

或者,您可以执行以下操作:

var result = "";
data.foreach((item) => {
    item.keys().foreach( (key) => {
        result += item[key];
    });
});

因为这将直接连接字符串。

答案 4 :(得分:0)

如何使用reduceObject.valuesspread

const data = [{one:1}, {two:2}, {three:3}]

const flatMapValues = arr => {
  return arr.reduce((collection, item)=> collection = [...collection, ...Object.values(item)], [])
}

这会更好地扩展,因为它将所有值转换为一个数组。

const data = [{one:1, four: 4}, {two:2, five:5}, {three:3, six: 6}]

const flatMapValues = arr => {
  return arr
    .reduce((collection, item)=> collection = [...collection, ...Object.values(item)], [])
    .sort((a, b) => a > b)
}