我创建了一个函数,它应该遍历一个对象数组并返回每个对象的第一个值。
public static String reverse(ArrayList<Float> list) {
if (list.size() == 1) {
return " " +list.get(0);
}
else {
return " "+ list.remove(list.size() - 1) + reverse(list);
}
}
它只返回第一行/第一列中的第一项。关于我缺少什么的线索?
答案 0 :(得分:2)
您可以将Object.keys
与Array#map
一起使用,以获取每个对象的第一个键值。
data = sheetData.map(v => v[Object.keys(v)[0]]);
工作示例:
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;
答案 1 :(得分:0)
这个解决方案怎么样?希望它有所帮助!
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;
答案 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中划分出来的。