将字符串附加到数组的值

时间:2014-09-01 12:41:58

标签: javascript jquery json

嗨我填充选择>使用我的json使用下面的代码的选项。我怀疑的是,只有当值为“IN”时我才想添加自定义属性。任何人都可以帮助实现这个目标

$.each( data, function( i, val ) {
    items.push( "<option value='" + val.countryCode + "'>" + val.countryName + "</option>" );
});

4 个答案:

答案 0 :(得分:0)

$.each( data, function( i, val ) {
   if(val.countryCode !='IN') {
     items.push( "<option value='" + val.countryCode + "'>" + val.countryName + "</option>" );
  }
   else {
     items.push( "<option data-id=1 value='" + val.countryCode + "'>" + val.countryName + "</option>" );
  }
});

答案 1 :(得分:0)

尝试这样的事情

$.each( data, function( i, val ) {
    items.push( "<option value='" + val.countryCode +( val.countryCode == "IN" ? "data-attr = 'value'" : "" ;) "'>" + val.countryName + "</option>" );
});

答案 2 :(得分:0)

目前只有if条件才可能。你可以通过打破第一个找到的结果来提高速度,但是你需要使用for循环:

for(var i=0;i<countryArr.length;i++) {
  if(countryArr[i].countryCode === "IN") {
    items.push( "<option value='" + countryArr[i].countryCode + "'>" + countryArr[i].countryName + "</option>" );
    break;
  }
});

如果您想使用forEach,请参阅this post.。但是一些表达可能更容易:

countryArr.some(function(data) {
    var check=countryArr[i].countryCode ==="IN";
    if(check) {
       items.push("<option value='" + data.countryCode + "'>" + data.countryName + "</option>");
    }
    return check; //some stops, if it returns true
});

ECMA6将引入find方法,以便您可以快捷方式:

items.push(countryArr.find(function(data) {
  return data.countryCode === "IN";
});

答案 3 :(得分:-1)

如果我理解你的问题:

$.each( data, function( i, val ) {
  items.push( "<option "+ (val.countryCode === "IN" && "data-id=1" || "") + " value='" +  val.countryCode + "'>" + val.countryName + "</option>" );
});`