我有一个对象:
var obj =
[
{
"value": "aep",
"label": "AEP"
},
{
"value": "cap",
"label": "CAP"
},
{
"value": "casl",
"label": "CASL"
} ] 我只想将标签的值转换为数组,这样最终结果就是:
["AEP", "CAP", "CASL"]如何只转换数组中的标签值?
发布于 2016-07-15 06:15:46
首先:obj不是一个对象,它是一个数组,因为父方括号是[]而不是{}。但是,我将保持名称不变。这可能会引起你的一些困惑。
var object = {};
var array = [];
var arrayOfObjects = [{},{},{}];
var objectOfArrays = {array1: [],array2: [],array3: []};要循环数组,可以使用for循环:
// new array
var newArray = [];
// iterates over each index in the array
for(var i=0; i<obj.length; i++) {
// Access the specific index, then access its `label` property
// Push into `newArray`
newArray.push(obj[i].label);
}
console.log(newArray);Codepen:http://codepen.io/theblindprophet/pen/RRxVba
发布于 2016-07-15 06:10:25
这是一个函数式的解决方案,而不是最直接的,你可能想参考@theblindprophet的答案来了解这个问题的命令式方法。
以函数式方式完成相当简单的任务:
var labels = obj.map(function(inner) { return inner.label });如何处理这样的问题:您需要考虑如何将您拥有的数据转换为您想要的数据。在本例中,您有一个对象数组,并且希望将此对象数组转换为放置在该对象内的字符串数组。
上面的代码迭代数组并返回数组的当前元素所需的值,从而在课程中构建一个新的数组(map)
发布于 2016-07-15 06:16:39
使用for循环
var out = [];
for (var i = 0, len = obj.length; i < len; i++) {
out.push(obj[i].label);
}
console.log(out);https://stackoverflow.com/questions/38385022
复制相似问题