在Javascript

时间:2018-04-09 22:19:56

标签: javascript arrays

我有一个整数数组

array = [1,1,1,1,0,0,0,0]

我想根据以下逻辑转换为字符串数组:

for(var index in arr){
   if(arr[index] == 0){
      arr[index] == 'Closed'
   }
   else{
      arr[index] == 'Open'
   }
}

为了获得以下输出

arr = ['open','open','open','open','closed','closed','closed','closed']

但是代码没有正确执行。你能不能在Javascript中为字符串分配字符串?任何帮助,将不胜感激。

4 个答案:

答案 0 :(得分:3)

您有拼写错误

<system.webServer>
   <rewrite xdt:Transform="Remove" >
   </rewrite>
 </system.webServer>

在这里

arr[index] == 'Closed'
           ^

你进行比较而不是分配。

满足您要求的另一种方法是使用 map 功能:

此方法将创建一个新数组

&#13;
&#13;
arr[index] == 'Open'
           ^
&#13;
const array = [1,1,1,1,0,0,0,0],
      result = array.map(n => n === 0 ? 'closed' : 'open');
      
console.log(result);
&#13;
&#13;
&#13;

使用布尔值的 coercion 稍短(1 = true,0 = false)

&#13;
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
const array = [1,1,1,1,0,0,0,0],
      result = array.map(n => n ? 'open' : 'closed');
      
console.log(result);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您正在使用比较操作而不是分配值,它应该是arr[index] = 'Open'而不是arr[index] == 'Open'

您可以使用Array.map来测试数组项的值。返回值是更新值的新数组

es5 example

var converted = arr.map(function(value){ if (value ==0) { return 'closed'; } return 'open'; });

ES6

const converted = arr.map(value => value === 0 ? 'closed' : 'open');

答案 2 :(得分:0)

你可以使用map();

array = [1,1,1,1,0,0,0,0];
const result = array.map(el => el === 1 ? "open" : "close");
console.log(result);

答案 3 :(得分:0)

您在某些地方使用==而不是=。双等于用于比较,例如检查杯子中是否有橙汁。 Single equals用于设置变量,例如将橙汁倒入杯中。正确的代码应该是:

for(var index in arr) {
    if(arr[index] == 0) {
        arr[index] = 'Closed'
    } else {
        arr[index] = 'Open'
    }
}

要考虑的另一件事是改变数组的类型通常是不好的做法,即使在JavaScript中也是如此。原因在于,如果稍后在您的代码中,您希望恢复原始二进制数组,那就太难了。

祝福,卢克。