如何将对象的循环输出分配给变量

时间:2017-11-15 11:00:57

标签: javascript

当我将数组转换为对象时,我发现了一个我无法解决的严重错误。当我们对数组使用map方法时,它会返回一些东西但是对象没有返回任何内容。

let output = for(var key in taggedOnes) { <- this is not a good approach at all. 
// But I'm looking for similar logic.
      let item = taggedOnes[key];
      ...
      if(id===this.state.selectedClothId) {
        return ( <- I can't return it? :(
          <View
            key={id}
            style={{
              top,
              left,
              height: thumbSize,
              width: thumbSize,
              borderWidth: 2,
              borderColor: 'yellow'
            }}
          />
        );
      } else {
        return (
          <View
            key={id}
            style={{
              top,
              left,
              height: thumbSize,
              width: thumbSize,
              borderWidth: 2,
              borderColor: 'white'
            }}
          />
        );
      }
    }
    return output; <- I want to return whole React Elements in one element like array.

3 个答案:

答案 0 :(得分:1)

您可以使用Object.keys获取包含taggedOnes对象中键的数组。 然后,您可以在此阵列上调用Array.prototype.map来浏览您的阵列并返回另一个阵列。

我不知道您在哪里创建id变量,但您可以轻松调整以下示例:

const output = Object.keys(taggedOnes).map(key => {
      const item = taggedOnes[key];

      if (id === this.state.selectedClothId) {
        return (
          <View
            key={id}
            style={{
              top,
              left,
              height: thumbSize,
              width: thumbSize,
              borderWidth: 2,
              borderColor: 'yellow'
            }}
          />
        );
      } else {
        return (
          <View
            key={id}
            style={{
              top,
              left,
              height: thumbSize,
              width: thumbSize,
              borderWidth: 2,
              borderColor: 'white'
            }}
          />
        );
      }
    }
});

答案 1 :(得分:0)

您需要的是Object.keys(taggedOnes).map。 for循环不会返回任何只是循环遍历值的东西,for循环中的return语句将返回当前函数。

另一方面,

Map使用提供的函数转换数组的每个元素,在这种情况下,它将/它转换为反应组件列表。

答案 2 :(得分:0)

您可以使用Object.keys(taggedOnes).maptaggedOnes对象转换为其转换值的数组。

let output = Object.keys(taggedOnes).map(key => {
  let item = taggedOnes[key];
  ...
  if (id===this.state.selectedClothId) {
    return ...
  } else {
    return ...
  }
});