2014-01-17 7 views
1

Я хочу отсортировать данные по json по возрастанию, у которых есть название, цена. хочу сортировать по цене.Сортировка с использованием d3js

Это мои данные json, которые используются в d3js.

var data = [ 
{"title":"ACER Aspire DQ.SP3EK.001 ZS 605 Refurbished 19.5\u201d All-in-One PC", 
"price":"<549.99"}, 
{"title":"LENOVO C540 23\u201d Touchscreen All-in-One PC","price":"699.99"}, 
{"title":"ACER Aspire V5-122P 11.6\u201d Touchscreen Laptop/u2013silver","price" :"499.99"}, 
{"title":"HP Pavilion 15-n097ea 15.6 Laptop \u2013 Goji Berry","price":"429.99"}, 
{"title":"SONY Vaio Fit 15 E SVF1521A1EW.CEK 15\u201d Laptop \u2013 White","price":"399.99"} 

] 

я сделал до сих пор:

var container = gallery.selectAll('.searchcontainer') 
.data(data, function(d) { return d.title; }); 

container.enter().append('div') 
.attr('class', 'searchcontainer') 

container.exit().remove(); 

container.selectAll('ttl') 
.data(function(d) { return [d]; }) 
.enter().append('div') 
.attr('class', 'ttl') 
.style('float','right') 
.style('margin-top','-20px') 
.style('margin-right','20px') 
.style('width','80%') 
.html(function(d) { return d.title; }); 

container.selectAll('.pricess') 
.data(function(d) { return [d]; }) 
.enter().append('div') 
.attr('class', 'pricess') 
.style('float','right') 
.style('width','10%') 
.style('margin-bottom','10px') 
.sort(d3.ascending()) 
.html(function(d) { return d.price; }); 
+0

Вам понадобится '.sort (d3.ascending (function (d) {return d.price;}))', но это не будет корректно работать со строкой. Я бы рекомендовал иметь только фактическое число в вашем JSON, а затем делать форматирование в другом месте. –

+0

Да, я пробовал это, но это не сработало для меня, у меня почти 40 записей в json. – Mayur

+0

Как я уже сказал, попробуйте иметь цену только как номер. Количество записей не имеет значения. –

ответ

4

Вы можете отсортировать массив, передавая функцию компаратора для .sort():

var container = gallery.selectAll('.searchcontainer') 
    .data(data.sort(function(a,b) { return +a.price - +b.price; }), 
    function(d) { return d.title; }); 

Полный пример here.

+0

, если моя JSON это [{ "цена": " £ 1,499.99 "}, {" цена": " £ 1,199.99 "}, {" цена": " £ 99,99"}] и использовать для сортировки это тогда его сортировка после запятой, почему ... ??? выход показано: 99,99 £ 1,999.99 £ 1,499.99 фунтов, но я Orignal он должен отображать: £ 99.99 £ 1,499.99 £ 1,999.99 – Mayur

+0

Это порядок строки сортировки. Если вам нужен порядковый номер, вы должны использовать числа (тип данных). –

+0

ОК, еще раз спасибо за это. – Mayur

Смежные вопросы