[英]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.