如何在js中连接字符串ang a num

时间:2017-07-11 10:30:58

标签: javascript angularjs concat meanjs

我有这样的价值

var npi = {
            code1: 'sm1',
            code2: 'sm8',
            code3: 'sm9',
            code4: ''
          }

我想将前3个项目推送到数组

var arr = [];
for (var i =0;i< 3;i++) {
  arr.push(npi.code+''+i);
}

它说错误npi.code未定义,因为它没有考虑npi.code1而不是npi.code。

在这里我认为它的连续问题。任何人都可以建议我帮忙。谢谢。

5 个答案:

答案 0 :(得分:3)

npi.code+''+i无效,因为没有此类密钥code+''+i。相反,您可以通过这种方式访问​​密钥npi['code'+i](就像使用索引访问数组一样)。

同样在您的代码中,i0code0开头是未定义的。因此,i应以1

开头

试试这个

var arr = [];
for (var i = 1;i <= 3;i++) {
  arr.push(npi['code'+i]);
}

答案 1 :(得分:2)

&#13;
&#13;
var npi = {
            code1: 'sm1',
            code2: 'sm8',
            code3: 'sm9',
            code4: ''
          }

var arr = [];
for (var i =1;i<= 3;i++) {
  arr.push(npi['code'+i]);
}
console.log(arr)
&#13;
&#13;
&#13;

对于你的情况,从1到3迭代,并从像npi['code'+i]这样的obj中获取值,这里你需要使用括号Property_accessors,因为它将值作为字符串。

答案 2 :(得分:2)

您可以使用Object.keys()方法和forEach()循环:

var npi = {
  code1: 'sm1',
  code2: 'sm8',
  code3: 'sm9',
  code4: ''
}
var arr = [];

Object.keys(npi).forEach(function(key) {
    if(npi[key] != ''){
      arr.push(npi[key]);
    }
});
console.log(arr);

  

Object.keys()方法返回给定对象自己的可枚举属性的数组,其顺序与for ... in循环提供的顺序相同(不同之处在于-in循环也枚举了原型链中的属性。

您的代码无法正常工作的原因是,当尝试使用.表示法获取对象的值时,该属性不能是字符串(当您使用+''+连接时实际上将对象属性转换为字符串)。字符串仅在[]的情况下有效。例如:

arr.push(npi.code + '' + i); //returns undefined
arr.push(npi['code' + i]); //returns your value

答案 3 :(得分:1)

首先,如果你想附加到对象键,你应该使用npi [&#39; code&#39; + i]而不是npi.code + i。因为npi.code + i意味着将(i)的值附加到npi中的键(代码)的值,这不存在。

其次,你应该从i = 1而不是i = 0开始循环。这样循环以npi开始[&#39; code1&#39;]而不是npi [&#39; code0&#39;]它也不存在。

此外,循环条件应为i <1。 4而不是i&lt; 3使得循环在i = 3而不是i = 2

之后结束
var arr = [];

for (var i = 1 ; i < 4 ; i++) {
    arr.push(npi['code' + i]);
}
console.log(arr);

答案 4 :(得分:0)

试试这个

var arr = [];
for (var i =0;i< 3;i++) {
  arr.push(npi['code'+i]);
}