Javascript循环遍历一个对象数组并返回第一个值

时间:2017-04-06 23:57:46

标签: javascript arrays object for-loop google-apps-script

我创建了一个函数,它应该遍历一个对象数组并返回每个对象的第一个值。

 public static String reverse(ArrayList<Float> list) {
   if (list.size() == 1) {
       return " " +list.get(0);
   }
   else {
       return " "+ list.remove(list.size() - 1) + reverse(list);
   } 
 }

它只返回第一行/第一列中的第一项。关于我缺少什么的线索?

4 个答案:

答案 0 :(得分:2)

您可以将Object.keysArray#map一起使用,以获取每个对象的第一个键值。

data = sheetData.map(v => v[Object.keys(v)[0]]);


工作示例:

&#13;
&#13;
var arr = [{foo: 'bar', bar: 'foo'},{foo: 'war', bar: 'foo'},{foo: 'mar', bar: 'foo'}],
    res = arr.map(v => v[Object.keys(v)[0]]);
    
    console.log(res);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这个解决方案怎么样?希望它有所帮助!

&#13;
&#13;
var sheetData = [{name : "Mike", id: 10},{name : "Laura", id: 23},{name : "carl", id: 25},{name : "Lori", id: 23}];
    var arr = []
    for(var i in sheetData){
        var someObject = sheetData[i];
        arr.push(someObject[Object.keys(someObject)[0]]);
    }
    console.log(arr);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您必须将循环语句移出循环。

function getSheetSectionData(name){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name),
  sheetData = sheet.getDataRange().getValues(),
  data = [];
  
  for (var i = 0; i < sheetData.length; i++){
      var obj = {};
      obj = sheetData[i][0];
      data.push(obj);
  }
   return data; 
}

答案 3 :(得分:-1)

我不确定你的意图是什么,但可能应该是这样的?

function getSheetSectionData(name){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name);
  var sheetData = sheet.getDataRange().getValues();

  var data = [];

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

  return data;
}

<强>更新

正如@grogx所述,在此上下文中似乎不需要创建临时对象,上面的示例可以优化为

function getSheetSectionData(name){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name);
  var sheetData = sheet.getDataRange().getValues();

  var data = [];

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

  return data;
}

可以进一步缩短为

function getSheetSectionData(name){
    return SpreadsheetApp.getActiveSpreadsheet()
        .getSheetByName(name)
        .getDataRange()
        .getValues()
        .map((e) => e[0]);
}

然而,我们并不知道OP的初衷是什么。可能的情况是,临时对象确实需要进行某种中间转换,这种转换是从MCVE中划分出来的。