将对象数组转换为字符串数组 - lodash

时间:2017-02-24 17:49:51

标签: lodash

如果我有以下数组:

[
  {
    0:{
       id:5,
       name:'xxx'
      }
  },
  {
    1:{
       id:6,
       name:'yyy'
      }
  }
]

我需要将其转换为

['xxx', 'yyy']

如何用Lodash实现它?

3 个答案:

答案 0 :(得分:2)

您可以使用Lodash的map方法。



var data = [
  {
    0:{
       id:5,
       name:'xxx'
      }
  },
  {
    1:{
       id:6,
       name:'yyy'
      }
  }
];

var arr = _.map(data, function(element, idx) {
  return element[idx].name;
});

console.log(arr);

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
&#13;
&#13;
&#13;

正如yBrodsky指出的那样,这假设对象键每次都继续增加一个。

答案 1 :(得分:1)

没有Lodash,但也许:

var arr = [];

x.forEach(function(item, index) {
    arr.push(item[index].name)
});
console.log(arr)

这假设对象键持续增加,0,1,2 .... n

答案 2 :(得分:1)

这是一个解决方案,它使用lodash的flatMapDeep在提取名称之前提取值:

Dim rgFound As Range
Set rgFound = Range("A1:E6").Find("1.Number of people", lookat:=xlWhole)

Dim rgValue as Range

If Not rgFound is Nothing Then 
    If Len(rgFound.Offset(1)) Then 'if the very next row is the next non-blank cell
        Set rgValue = rgFound.Offset(1) 
    Else 'if blanks appear between found and value
        Set rgValue = rgFound.End(xlDown)
    End If
End If

修改 更改地图以为每个项目返回不同的值。例如,要将id和name作为键值对返回,您可以这样做:

let data = [
  {
    0:{
       id:5,
       name:'xxx'
      }
  },
  {
    1:{
       id:6,
       name:'yyy'
      }
  }
]

let result = _(data)
    .flatMapDeep(_.values)
    .map('name')
    .value()