我有以下資料作為嵌套陣列請參閱下面的小提琴 https://jsfiddle.net/athulmathew/z3s1w0mu/ 我想從下面的陣列中獲取輸出
var item {caller_number_raw : data from the array,company_id:data from the array}
我試著這樣排序
for (i in data.data.hits) {
for (j in data.data.hits[i]._source) {
//str = data.data.hits[i]._source[j] "<br/>";
var Item ={CallerID:data.data.hits[i]._source[j].caller_number}
console.log(Item)
}
}
但回傳一個空物件“{}”我對嵌套陣列不太熟悉,誰能幫我在這里做錯了什么
uj5u.com熱心網友回復:
_source只是一個Object,你不必為了得到一個特定的屬性而遍歷它的屬性,你可以用 just 替換第二個回圈var Item ={CallerID:data.data.hits[i]._source.caller_number} 。
此外,由于data.data.hits是一個陣列,因此使用for...ofor 普通for回圈而不是for...in.
這是一個例子:
for (const hit of data.data.hits) {
const item = { CallerID: hit._source.caller_number };
console.log(item);
}
事件雖然上面的例子可以作業,但它不會產生你提到的所需輸出,要做到這一點,你可以使用這樣的東西:
for (const hit of data.data.hits) {
const item = { caller_number_raw : hit.caller_number_raw, company_id: hit.company_id }
console.log(item);
}
如果要將所有新創建的物件存盤到陣列中,可以執行以下操作:
const output = [];
for (const hit of data.data.hits) {
output.push({ caller_number_raw : hit.caller_number_raw, company_id: hit.company_id });
}
console.log(output);
使用函式式方法更容易:
const output = data.data.hits.map(({ caller_number_raw, company_id }) => ({ caller_number_raw, company_id }));
uj5u.com熱心網友回復:
在這里你不需要第二個 for in 回圈,因為它_source是一個物件。
for (let i in data.data.hits) {
if(data.data.hits[i]._source.caller_number){
var Item = {
CallerID: data.data.hits[i]._source.caller_number
}
console.log(Item)
}
}
這是解決方案的jsFiddle鏈接。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/405345.html
標籤:
上一篇:在已排序的串列中添加或移動元素
