2015-04-17 35 views
-2

我在試圖做的是獲得存儲在數組中的唯一值,如果一個元素被推送到具有相同的MAC和IP的JSON字符串我想使它取代現有的記錄與新的它可以取代它全部或只是信號,距離和頻率我沒有一個堅實的代碼段我目前只是試圖獲得我需要的東西。貝婁是從我的JavaScript控制檯的鉻輸出JSON輸出的例子我知道它沒有格式化最好,但它是有效的。做一個推動和更新在javascript陣列

{"prey":["{\"distance\": 8.686924173343307, \"signal\": \"-59\", \"frequency\": 2447, \"mac\": \"00:00:00:00:00:00\", \"ip\": \"192.168.43.27\"}"]} 

我曾嘗試做多遠使用for循環重複檢查的JavaScript是返回數組的長度錯誤由於某種原因,這並不工作,它只是卡住了,因爲我一個無限循環不斷增加值給數組,並且它不以它應該的獨特方式工作。

這是我目前擁有的代碼,因爲我只是不斷嘗試一切,我可以認爲這不能以任何方式工作我一直在試圖獲得獨特的數組,但它只是不工作這個輸出和實際輸出一樣,它沒有得到唯一的數組。我從一個堆棧溢出問題

function arrayLastUnique(array) { 
    return array.filter(function (a, b, c) { 
     // keeps last occurrence 
     return c.indexOf(a, b + 1) < 0; 
    }); 
} 

jsonSpy['prey'].push(msg); 
$('#lines').append($('<p>').text(msg)); 
console.log(arrayLastUnique(jsonSpy.prey)); 
spyList = JSON.stringify(jsonSpy); 
drawPositions(ctx, spyList); 
+3

您的JSON無效。它應該像'{「獵物」:[{}]}''而不是'{「獵物」:[「{}」]}' – Satpal

+0

是的,我把它粘上去了,我現在修復它 – bobthemac

+0

它是從我的谷歌鉻調試控制檯 – bobthemac

回答

0
var yourJSON = {"prey": 
    [ 
     { "distance": 8.686924173343307, 
      "signal": "-59", 
      "frequency": 2447, 
      "mac": "00:00:00:00:00:00", 
      "ip": "192.168.43.27" 
     } 
    ] 
}; 

var newDistance = 8.69; 

if (yourJSON["prey"][0]["mac"] && yourJSON["prey"][0]["ip"]) { 
    yourJSON["prey"][0]["distance"] = newDistance; 
} 

得到了獨特的功能,如果存在「MAC」和「IP」的值,即它們不是一個空字符串,false,0,nullundefined,條件滿意。在條件塊中,您可以分配一個新值。這只是一個非常簡單的例子。你必須根據你的需要調整它並擴展它。