2014-10-22 32 views
0

我有以下Javascript對象。將JavaScript對象鍵轉換爲字符串

{min: 0.01, max: 0.02, 29%: 0.03, 31%: 0.04, 32%: 0.05} 

我怎樣才能將它轉換爲一個對象的鍵爲字符串。例如:

{'min': 0.01, 'max': 0.02, '29%': 0.03, '31%': 0.04, '32%': 0.05} 

我需要這種格式的原因是因爲NoUISlider將它用於自定義值。

當手動插入值,我創建了一個var range = {}和分配的值,像這樣:

range = [percent + '%'] = some_decimal_value; // percent is an integer 

NoUiSlider不接受像第一個對象,所以我需要將其轉換爲一個對象用鍵作爲字符串。

我已經試過range[String(percent + '%')], didn't work.

參見「步驟之間捕捉」的對象應該如何here

當我改變數值或範圍變量這樣:

range = { 
    'min': 0, 
    '10%': 50, 
    '20%': 100, 
    '30%': 150, 
    '40%': 500, 
    '50%': 800, 
    'max': 1000 
} 

它的工作原理。

謝謝。

+3

一個簡單的Javascript對象*中的每個鍵都是一個字符串。您問題頂部的「對象」是無效的Javascript。那麼,這些數據來自哪裏? – MaxArt 2014-10-22 09:41:08

+0

@MaxArt好吧,我假設鑰匙在字符串中,我只是在Chrome中將它看作非字符串。如果是這樣,那麼這個對象不能和NoUiSlider一起使用,而且我在問題中顯示的是什麼?謝謝 – 2014-10-22 09:51:10

+1

@IdanShechter你確定這裏的問題不是你在對象中使用float值而不是int值嗎? – 2014-10-22 09:54:57

回答

1

這與NoUISlider無關 - 您當前的對象無效。在對象鍵名稱中不能有%符號,而不會將它們放在第一個引號中。

當前標準的,你的JavaScript拋出以下錯誤:

Uncaught SyntaxError: Unexpected token %

,你可以在這裏做的唯一的事情就是修改其中這個對象在第一個地方產生的 - 你的JavaScript會在這裏引發錯誤無論如何,請檢查您的瀏覽器的JavaScript console以瞭解發生這種情況的原因。


The object is valid as I initialized it in code because I can see it in the inspector correctly, at least in the way I initialized it like [percent + '%'] – Idan Shechter 2 mins ago

如果是這樣的話,那麼你的對象鍵已經在字符串形式。在JavaScript中,當你一個數字值添加到字符串值它會連接這兩個數值爲一個字符串值:

1 + '%' 
-> "1%" 

var foo = {}; 
foo[30 + '%'] = 'bar'; 
-> Object {30%: "bar"} 

JavaScript控制檯可以顯示這是30%(不是裹着引號),但如果我們檢查它的類型,我們會看到,它實際上是一個字符串:

for (var key in foo) 
    console.log(typeof key); 
-> string 

您的問題指出,不使用浮點值的方式可以正常工作,但是使用浮點值的方式不會,所以我認爲真正的問題可能是您在初始化時使用浮點值而不是整數值原始對象。

+0

該對象在我在代碼中初始化它的時候是有效的,因爲我可以正確地在檢查器中看到它,至少以我初始化它的方式如[%+'%']。 – 2014-10-22 09:47:16

+0

@IdanShechter如果你這樣初始化它,那麼你的對象已經是字符串形式。 – 2014-10-22 09:49:39

+0

@IdanShechter請看我最新的答案。 – 2014-10-22 09:53:43

1

你原來的對象不能擺在首位存在

SyntaxError: Unexpected token '%'. Expected ':' after property name. 

所有鑰匙都在JavaScript自動字符串。

+0

嗨,這是對象在鉻檢查器中的顯示方式 – 2014-10-22 09:44:51

+0

@IdanShechter Chrome檢查器*始終*顯示沒有引號的鍵名。它們不能是字符串以外的任何東西,所以添加引號來表示字符串沒有意義。 – JJJ 2014-10-22 09:47:13

+0

@Juhana,所以我認爲我所做的是正確的,並且對象是有效的。如果是這樣,爲什麼NoUiSlider不接受它(我用一個對象值更新了問題) – 2014-10-22 09:49:38