我有兩個陣列,一個帶有標簽日期,即 [Date, Date, Date ...] 和
另一個具有實際日期資料,即 [2021-11-26, 2021-11-25, ...]。
我想組合這兩個陣列,以便我得到物件陣列,例如 [ { Date: 2021-11-26}, {Date:2021-11-25}, {..}, ...]。
這兩種方法我都試過了
obj = {};
for (var i = 0, l = date_label.length; i < l; i = 1) {
obj[date_label[i]] = data_date[i]
}
console.log(obj);
和
_.zipObject(date_label, data_date);
然而,它最終只給了我資料集的最后日期,在物件資料結構中,即 { Date: 1999-11-24}
uj5u.com熱心網友回復:
物件/關聯陣列中的鍵是唯一的。你obj是這樣的。如果將其轉換為常規陣列并將新物件推入其中,它將起作用。
const obj = [];
for (let i = 0, l = date_label.length; i < l; i ) {
obj.push({[date_label[i]]: data_date[i]})
}
console.log(obj);
您可能應該斷言兩個陣列的長度相同。
uj5u.com熱心網友回復:
您面臨的問題是您的 date_label 是相同的,并且回圈正在替換同一標簽上的日期,一次又一次,您只需要更改標簽名稱并為每個標簽指定唯一的名稱,或者將它們更改為回圈就像這樣(obj[date_label[i] str(i)] = data_date[i])。
date_label = ['date1', 'date2', 'date3', .....]
obj = {};
for (var i = 0, l = date_label.length; i < l; i = 1) {
obj[date_label[i]] = data_date[i]
}
console.log(obj);
uj5u.com熱心網友回復:
obj 是陣列型別而不是物件。data_date 需要是字串格式。
for(var i= 0; i<data_date.length-1;i ) {
obj.push({"Date":date_date[i]}) }
uj5u.com熱心網友回復:
使用陣列減少 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
var myFinalArray = data_date.reduce(
(previousValue, currentValue, currentIndex, array) => ({
currentValue: date_label[currentIndex]
}), {});
uj5u.com熱心網友回復:
你好阿什利克拉斯托,
歡迎使用 Stackoverflow。
Sol : 嗯,其他成員已經給出了如何達到預期結果的解決方案。我將強調為什么你會得到單個物件。
它最終只會在物件資料結構中給我資料集的最后日期,即 { Date: 1999-11-24}
您需要了解 JavaScript 中的參考是如何作業的。這是問題,
由于date_label中的值都相同
[日期,日期,日期...]
當您使用時,
obj[date_label[i]] = data_date[i]
每次執行時,相同的鍵值將不斷更新,而不是創建新鍵和新值。因為相同的值持有相同的參考。
因此,第一次 {"date" : "somevalue"} 將在那里,然后第二次 {"date" : "somevalue2"},鍵“date”的值將使用新值更新。這是由于相同的密鑰。
因此,你需要把這個東西拿走。為了您更好地理解這里是我的代碼:(與其他人相同但精心制作)
const date_label = ["date","date"]
const data_date = [2021-11-26, 2021-11-25]
function returnObj(label, value){
//this will return a new object with provided label and value.
const Obj = {};
Obj[label] = value
return Obj
}
let listOfObjects = []
for(let i=0 ; i< date_label.length ; i ){
//new object will be added to list.
const obj = returnObj(date_label[i],data_date[i])
listOfObjects.push(obj)
}
console.log(listOfObjects)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/366741.html
標籤:javascript 数组 目的
上一篇:如何檢查值是否等于陣列中的字串
