簡體   English   中英

將第一個值設置為Javascript數組中的鍵

[英]Set First Value as Key in Javascript Array

根據選定的DataTables行創建數組

$('#savenlp').click(recordjourney);

function recordjourney() {
var data = table.rows(['.selected']).data().toArray();
console.log( (data) );
console.log( JSON.stringify(data) );
}

data返回

0 : (8) ["Which", "TitleCase", "QuestionWord", "", "", "", "", ""]

JSON.stringify(data)返回

[["baseball","Noun","Singular","","","","",""]]

這個信息是動態生成的,所以我只想取第一個值(在這種情況下是baseball )並把它變成類似的東西

  "baseball": [
    "Noun",
    "Singular"
  ]

我可以返回第一個值(我想要使用的鍵)

alert(data[0][0]);

我在PHP方面更擅長,但我正在學習越來越多的javascript / jquery。

這是我的理解javascript沒有關聯數組,所以我對如何生成這個有點困惑。

 const data = [ ["baseball","Noun","Singular","","","","",""], ["baseballs","Noun","","Plural","","","","",] ]; const mappedData = data.reduce((acc, row) => { acc[row.shift()] = row.filter(d => d !== ''); return acc; }, {}); console.log(mappedData); 

我們可以使用對象解構和擴展運算符以方便使用。 在下面的示例中, key將是第一個項目,所有其余項目將放在newData變量中

 const data = [["baseball","Noun","Singular","","","","",""]]; const [key, ...newData] = data[0] // if you want the new data to not have empty entries, simple apply the filter const newDataFiltered = newData.filter(item => !!item) const objWithEmpty = {[key]: newData} const objWithoutEmpty = {[key]: newDataFiltered} console.log(objWithEmpty, objWithoutEmpty) 

對於外部數組中的多個數組,只需將整個邏輯包含在for循環中

 const data = [ ["baseball","Noun","Singular","","","","",""], ["baseball1","Noun1","Singular1","","","","",""], ["baseball2","Noun2","Singular2","","","","",""] ]; const objWithEmpty = {} const objWithoutEmpty = {} data.forEach((array) => { const [key, ...newData] = array // if you want the new data to not have empty entries, simple apply the filter const newDataFiltered = newData.filter(item => !!item) objWithEmpty[key] = newData objWithoutEmpty[key] = newDataFiltered }) console.log(objWithEmpty, objWithoutEmpty) 

只需從data提取所需的值,然后將它們放入一個格式化的對象中:

 const data = [["baseball","Noun","Singular","","","","",""]]; const firstArr = data[0]; const transformedFirstObject = { [firstArr[0]]: [firstArr[1], firstArr[2]], }; console.log(transformedFirstObject); 

但是擁有一個只有一個這樣的屬性的對象真是太奇怪了。 如果您的data可能包含多個子數組,並且您希望將數組數組轉換為對象數組,請使用map

 const data = [ ["baseball","Noun","Singular","","","","",""], ["foo","bar","baz","","","","",""] ]; const transformed = Object.assign(...data.map(([prop, value1, value2]) => ({ [prop]: [value1, value2] }))); console.log(transformed); 

與其他答案相比,這有點簡單,但同樣有效。

 const data = [ ["baseball","Noun","Singular","","","","",""], ["baseball1","Noun1","Singular1","","","","",""], ["baseball2","Noun2","Singular2","","","","",""] ]; const obj = []; data.forEach(function(i) { let jsonObj = {}; jsonObj [i[0]] = i.slice(1).filter(x=>x !=''); obj.push(jsonObj) }); console.log(JSON.stringify(obj)) 

只需使用forEach ,考慮多個數組元素。

 var obj = {}; var arr = [ ["baseball", "Noun", "Singular", "", "", "", "", ""], ["Test", "Test1", "Test2", "", "", "", "", ""] ]; arr.forEach(function(val, idx) { val.forEach(function(val1, idx1) { if (idx1 === 0) { obj[val1] = val.slice(1, val.length) } }) }) console.log(JSON.stringify(obj)) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM