我认为非常基本的问题,但我找不到相关的信息。
通过d3我解析一个csv,每个对象看起来像这样
name: "whatever"
number: "52"
如何在不创建新数组和推送每个元素的情况下,将所有属性“number”的数组作为数组访问?
答案 0 :(得分:29)
使用array.map:
var numbers = objects.map(function(o) { return o.number; });
答案 1 :(得分:2)
在JavaScript中,你不能,因为没有这样的数组。如果你有一个对象数组,那么每个对象都是它自己珍贵的小雪花。您当然可以将“数字”值传输到新数组,但它肯定是一个新数组。
一些工具包(Prototype,也许是Functional和Underscore)有一个“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");
答案 2 :(得分:1)
for (i=0; i<myArrayOfObjects.length; i++) {
doWhatever(myArrayOfObjects[i].number);
}
答案 3 :(得分:0)
如果你使用的是lodash,你可以这样做:
var numbers = _.map(originalArray, 'number')
答案 4 :(得分:-1)
ES6版本:
const numbers = objects.map( o => o.number );
享受。