使用.east()在jQuery数组中获得第一个索引的值



我有一个通过Ajax返回的JSON数组,看起来像:

"stuff": [["2","66%"], ["3","42%"],...

问题我想将该数组中每个元素的零索引与循环外部的变量匹配,如果它匹配,我想返回其旁边的百分比。

我不知道jQuery中的语法。请在下面查看我的代码,看看是否正确:

var percentage = 0;
var stuffarr = jsonobj['stuff'];
var stuffID = jsonobj['stuff_id']
if (!stuffID || 0 === stuffID.length){
   $("#stuff-element").html("--");
}
else {
   var percentage = $.each(stuffarr, function (index, value) {
   if(value[0] == stuffID)
      return value[1]   
   });
}

首先,一些术语。您拥有的数据结构是具有多个属性的对象。它与JSON进行了应有的认可。

关于您的问题,不需要jQuery,因为您可以使用find()通过stuffID变量的值在数组中找到该项目。尝试以下操作:

var obj = {
  "stuff": [
    ["2", "66%"],
    ["3", "42%"]
  ],
  "stuff_id": "3"
}
var percentage = 0;
var stuffArr = obj['stuff'];
var stuffId = obj['stuff_id']
if (!stuffId || 0 === stuffId.length) {
  $("#stuff-element").html("--");
} else {
  percentage = stuffArr.find(function(el) {
    return el[0] == stuffId;
  })[1];
}
  
console.log(percentage);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

尝试此

var percentage = stuffarr.find(function (value) {
if(value[0] == stuffID)
   return value[1];  
})[1];

您使用的返回语句返回.EAK(..)函数内的函数(..)的结果,而不是.east(..)函数的返回值。有效的返回值是布尔值,它"告诉" .east(..)函数是否应该继续。而是使用以下语法:

var ret = '';
$(arr).each(function () {
    var curr = $(this);
    //console.log(curr); 
    if(curr[0] == stuffID){
        //console.log('>>found: ' + curr[1]);
        ret = curr[1];
        //if found -> break loop
        return false; 
    }
});

注释:您应该考虑使用内部数组数据结构而不是使用对象,而是更"正确"的数据结构:

// "stuff": [{"id":"2","percent":"66%"}, {"id":"3","percent":"42%"},...
var ret = '';
$(arr).each(function () {
    var curr = this;
    //console.log(curr.id); 
    if(curr.id == stuffID){
        //console.log('>>found: ' + curr.percent);
        ret = curr.percent;
        //if found -> break loop
        return false; 
    }
});

@liverpoolowen方法干净整洁,如果您想将其与对象方法结合使用,请执行此操作:

arr.find(function (value) {
if(value.id == stuffID)
   return value;  
}).percent;

相关内容

最新更新