我有一個數組對象,如下所述;如何迭代數組中的對象?
var myArray=[{dateformat:"apr1", score:1},{dateformat:"apr2",score:2},{dateformat:"apr3",score:3}];
我想日期格式的值提取到一個單獨的數組,例如:
var dateArray=["apr1","apr2","apr3"];
var score=[1,2,3];
我使用的是for
循環提取指標,但我沒能得到的值。
我有一個數組對象,如下所述;如何迭代數組中的對象?
var myArray=[{dateformat:"apr1", score:1},{dateformat:"apr2",score:2},{dateformat:"apr3",score:3}];
我想日期格式的值提取到一個單獨的數組,例如:
var dateArray=["apr1","apr2","apr3"];
var score=[1,2,3];
我使用的是for
循環提取指標,但我沒能得到的值。
如果您只是不想對變量進行硬編碼,則可以使用Array#forEach
和Object.keys
將每個唯一鍵值存儲在例如陣列。
注意:沒關係許多鑰匙你怎麼在你的對象,下面的解決方案總是會把你返回正確的輸出。請注意,您甚至不必首先聲明新的變量。
var myArray = [{dateformat:"apr1", score:1},{dateformat:"apr2",score:2},{dateformat:"apr3",score:3}],
obj = {};
myArray.forEach(v => Object.keys(v).forEach(function(c) {
(obj[c] || (obj[c] = [])).push(v[c]);
}));
console.log(obj);
創建空陣列,以及使用的forEach與「元素」(其代表陣列中的每個對象),並且每個的性質的推埃施的參數對象成所需的陣列。
var dateArray=[];
var score=[];
var myArray=[
{dateformat:"apr1", score:1},
{dateformat:"apr2",score:2},
{dateformat:"apr3",score:3}
];
myArray.forEach(function(element) {
dateArray.push(element.dateformat);
score.push(element.score);
});
console.log(dateArray); //gives ["apr1","apr2","apr3"]
console.log(score); //gives ["1","2","3"]
這裏的答案是一個簡單的循環。
var dateArray = new Array(myArray.length);
for(var i = 0; i < myArray.length; ++i) {
var value = myArray[i];
var dateValue = value.dateformat;
dateArray[i] = dateValue;
}
您可以使用map函數完成相同的:
var dateArray = myArray.map(function(value) { return value.dateformat; });
使用map
遍歷初始數組對象,並返回所需的項目。
var myArray=[{dateformat:"apr1", score:1},{dateformat:"apr2",score:2},{dateformat:"apr3",score:3}];
var dateArray = myArray.map(function(obj){return obj.dateformat;}),
score = myArray.map(function(obj){return obj.score});
console.log(dateArray);
console.log(score);
您可以使用給定數組的單循環方式和重複鍵和推值到想要的陣列。
var myArray = [{ dateformat: "apr1", score: 1 }, { dateformat: "apr2", score: 2 }, { dateformat: "apr3", score: 3 }],
dateArray = [],
score = [];
myArray.forEach(function (target, keys) {
return function(a) {
keys.forEach(function(k, i) {
target[i].push(a[k]);
});
};
}([dateArray, score], ['dateformat', 'score']));
console.log(dateArray);
console.log(score);
爲什麼使用'reduce'?您的step函數使用累加器'r'並返回它,即所有步驟都使用相同的累加器(它是循環內的常量)。爲什麼不使用'forEach'呢? – melpomene
@melpomene,對,只是把它改爲閉包。 –
* 「但我沒能得到的值」 * ...我們展示的代碼。 Stackoverflow不是一個免費的代碼編寫服務,它的想法是幫助你修復你的代碼**,但不能按預期執行 – charlietfl