2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
我做了一些大修改,但這里有另一種選擇:
$(async function() {
const data = await $.get("https://spreadsheets.google.com/feeds/list/1VC633BXpMElJjRWvIRuZIP7UrEhuw6BdscnrV2heox0/1/public/full?alt=json");
const arrays = {};
for (const entry of data.feed.entry) {
for (const key in entry) {
if (key.slice(0, 4) != "gsx$") continue;
if (!entry[key].$t.trim()) continue;
const name = key.slice(4); // optional, you could also use `key`
if (!arrays[name]) arrays[name] = [];
arrays[name].push(entry[key].$t);
}
}
console.log(arrays);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
該解決方案首先創(chuàng)建一個(gè)arrays
將保存不同數(shù)組的對(duì)象。然后,我循環(huán)遍歷這兩個(gè)data.feed.entry
值,并且對(duì)于每個(gè)條目,我將循環(huán)遍歷鍵。如果key
不以開頭"gsx$"
或者修剪后關(guān)聯(lián)值為空字符串,我將跳到下一次迭代。
如果我們沒有跳過,請(qǐng)刪除前 4 個(gè)字符key
并將這個(gè)新值分配給name
(可選)。然后檢查是否arrays
包含該屬性name
,如果不包含則將其分配arrays[name]
給空數(shù)組。
最后將值壓入數(shù)組。
我試圖讓這個(gè)答案易于理解,如果您有任何問題,請(qǐng)不要害怕發(fā)表評(píng)論。

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
首先你需要知道的是javaScript中的數(shù)組只是對(duì)象的一種特殊形式,而索引是整數(shù)類型的屬性名稱,因此如果你不僅想通過索引訪問數(shù)組中的元素,還想通過屬性名稱訪問數(shù)組中的元素,你可以使用計(jì)算屬性將這些值映射到不同的名稱。
const keys = ['fruits', 'animals', 'numbers']
const data = [
["apple", "banana"],
["monkey", "dog", "cat", "bear"],
["one", "two", "three", "four"]
];
data.forEach((item, index, array) => array[keys[index]] = item);
console.log(data);
console.log(data[0]);
console.log(data['fruits']);
雖然它可以解決您的問題,但它會(huì)改變?cè)紨?shù)組。如果您需要訪問具有屬性名稱的元素,我建議您使用另一種數(shù)組方法reduce,這樣您可以獲得新形式的數(shù)據(jù),并且保持原始數(shù)組不變。
const keys = ['fruits', 'animals', 'numbers']
const data = [
["apple", "banana"],
["monkey", "dog", "cat", "bear"],
["one", "two", "three", "four"]
];
const newFormData = data.reduce((acc, cur, index) => {
return { ...acc,
[keys[index]]: cur
}
}, {});
console.log(data);
console.log(newFormData);
添加回答
舉報(bào)