2017-08-11 19 views
1

我有一個包含數組的對象。這裏是什麼樣子在我的瀏覽器中的圖像:如何只顯示前2個對象(javascript)

Here is what it looks like in my browser

我需要顯示,例如,只有第2個陣列。 到目前爲止,我已經試過這

var size = 2; 
var sliced = joblist.slice(0, size); 

然而,這並不工作,我得到以下信息

error:slice is not a function. it doesn't have a length 

有人可以幫助我理解我在做什麼錯?

+0

對象沒有排序,因此,聲明*只有2個第一要素*沒有任何意義。 –

回答

5

雖然對象的鍵沒有順序,但您可以將鍵取出,對它們進行排序並將前兩個鍵作爲新對象。

var joblist = { 
 
     '2017-08-08': [1], 
 
     '2017-08-09': [2], 
 
     '2017-08-10': [3, 4, 5], 
 
     '2017-08-11': [6] 
 
    }, 
 
    size = 2, 
 
    topObjects = Object.assign(
 
     ...Object 
 
     .keys(joblist) 
 
     .sort() 
 
     .slice(0, size) 
 
     .map(k => ({ [k]: joblist[k] })) 
 
    ); 
 

 
console.log(topObjects);

+0

這是一些嚴重隱藏的代碼。我喜歡。 –

+0

與排序?他們來自後端,和4個元素打印像我需要 –

+0

爲什麼不使用這個後端? –

0

var joblist = { 
 
    'obj': [1,2,3], 
 
    'obj2': [4,5,6], 
 
    'obj3': [7,8,9], 
 
    'obj4': [10,11,12], 
 
}; 
 

 
var size = 2; 
 

 
var i = 0; 
 
for (var prop in joblist) { 
 
    if (i < size) { 
 
    console.log(joblist[prop]); 
 
    } 
 
    i++; 
 
}

1

Object沒有.slice()方法。

可以使用Object.entries()獲得的屬性的陣列,該對象內的值對再調用.slice()該陣列上,鏈.map()設置在其可以被傳遞給Object.assign()秒參數一個新的對象的屬性和值,如果一個對象是預期的結果

const o = { 
 
a:[], b:[], c:[], d:[] 
 
} 
 

 
let res = Object.assign({}, ...Object.entries(o).slice(0, 2) 
 
      .map(([key, prop]) => ({[key]:prop}))); 
 

 
console.log(res)

0
Object.keys(joblist).map(function(k) { 
    joblist[k] = joblist[k].slice(0, 2); 
});