获取json对象最后一个值的Javascript

获取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

我需要json对象的最后一个元素,如下所示:

{
  "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;
}