我覺得很基本的問題,但我無法找到關於該對象的信息。訪問對象數組的屬性
通過D3我解析CSV和每個對象看起來像這樣
name: "whatever"
number: "52"
我如何可以訪問的所有屬性「數字」數組作爲數組,而無需創建一個新的數組,推動每一個元素?
我覺得很基本的問題,但我無法找到關於該對象的信息。訪問對象數組的屬性
通過D3我解析CSV和每個對象看起來像這樣
name: "whatever"
number: "52"
我如何可以訪問的所有屬性「數字」數組作爲數組,而無需創建一個新的數組,推動每一個元素?
在JavaScript中,你不能,因爲沒有這樣的數組。如果你有一系列物體,那麼每個物體都是它自己珍貴的小雪花。你當然可以將「數字」值傳遞給一個新的數組,但肯定是一個新的數組。
一些工具包(原型,也許功能和下劃線)有一個「pluck()」設施,旨在做你想要的,但他們也被迫創建新的數組。
function pluck(array, property) {
var i, rv = [];
for (i = 0; i < array.length; ++i) {
rv[i] = array[i][property];
}
return rv;
}
然後:
var arrayOfNumbers = pluck(originalArray, "number");
也許值得加強'pluck'來接受在循環中調用的回調並接收每個對象的給定屬性的值。該數組仍然可以用於返回從回調中返回的值數組。 – RightSaidFred
有趣的是,@RightSaidFred,我只是在想:-)然後我意識到這個函數實際上就是你通常所說的「map()」,你當然可以用「map()」實現「pluck()」 ()」。 – Pointy
非常真實。這只是一個不太靈活的地圖!咄! – RightSaidFred
for (i=0; i<myArrayOfObjects.length; i++) {
doWhatever(myArrayOfObjects[i].number);
}
如果您正在使用lodash,你可以這樣做:
var numbers = _.map(originalArray, 'number')
你的意思是每個對象都是這樣的:'{「name」:「whatever」,「number」:52}'你有這些對象的數組嗎? –
您可以直接訪問號碼字段。只是使用[我] [「數字」]或某物[我]。數字...甚至可以循環播放。是否有任何其他具體原因讓你把它作爲一個單獨的數組,而不是通過前面提到的方式直接訪問它? –