获取json对象最后一个值的Javascript
我需要json对象的最后一个元素,如下所示:获取json对象最后一个值的Javascript,javascript,object,get,element,Javascript,Object,Get,Element,我需要json对象的最后一个元素,如下所示: { "results": { "collection1": [ { "price": [ "95", "80" ], }, { "price": "68" }, ..... 这是我的职责: function transform(data) { for (var i = 0; i < data
{
"results": {
"collection1": [
{
"price": [
"95",
"80"
],
},
{
"price": "68"
},
.....
这是我的职责:
function transform(data) {
for (var i = 0; i < data.results.collection1.length; i++){
var price = data.results.collection1[i].price;
data.results.collection1[i].price = price[price.length-1];
}
return data;
}
第一个价格元素是80,第二个价格元素是8。。但是我需要68块。试试看
data.collection1[data.collection1.length-1]。价格 问题在于第一个
price
属性是数组,第二个是字符串。理想情况下,即使只有一个价格,您也可以将price
作为一个数组
否则,您必须检查price
属性是否为数组:
data.collection.price instanceof Array ?
data.collection.price[data.collection.price.length - 1] :
data.collection.price;
如果是数组,则此语句将使用最后一个元素;如果不是数组,则仅返回price属性。将函数更改为
function transform(data) {
for (var i = 0; i < data.results.collection1.length; i++) {
var price = data.results.collection1[i].price;
if (Object.prototype.toString.call(price) === '[object Array]'){
data.results.collection1[i].price = price[price.length - 1];
} else {
data.results.collection1[i].price = price;
}
}
return data;
}
函数转换(数据){
对于(变量i=0;i
注意:Array.isArray是一个Ecmascript 5函数,可能不是在所有环境中都定义的。尝试以下操作:
if (Array.isArray(data.collection.price)) {
price_last = data.collection.price[price.length-1];
} else {
price_last = data.collection.price;
}
在第一个
price
数组中获取80
的规则是什么?JSON似乎没有明确的模式。规则是data.collection.price[data.collection.price.length-1];对于第一个,它是有效的(因为它是一个数组),但是对于第二个,它减少了68,得到了8。这只是一小部分。他编辑了这个问题。原文有误。他指的是未定义的[价格]
if (Array.isArray(data.collection.price)) {
price_last = data.collection.price[price.length-1];
} else {
price_last = data.collection.price;
}