映射和对象反应

时间:2017-03-24 15:10:25

标签: javascript reactjs object iteration

我想使用iteratio创建这样的对象: opts = [{label:1,value:1},{label:4,value:4}] 此对象内的值在数组portArray = [1,4]内 我正在写

MyProperty

但它似乎不起作用。我错过了一些东西,但我不知道是什么。有任何想法吗?

3 个答案:

答案 0 :(得分:2)

您提供的代码无效。它包含非法的return语句。

您可以使用以下方法获得所需的解决方案: Object.assign



const portArray = [1, 4],
      res = portArray.map(v => Object.assign({}, { label: v, value: v }));
      console.log(res);




答案 1 :(得分:1)

您的代码缺少逗号分隔对象属性:

{
  label: value, // <-- comma between properties
  value: value
}

此外,Array#map将返回一个新数组,其中包含映射到对象的值,您可以将这些值存储在局部变量中:

const portArray = [1,4];
const newArray = portArray.map(value =>({ label: value, value: value }));
            // remember this comma :) ----------------^

关于箭头函数的隐式vs显式返回值的附注:

箭头函数后面的对象文字周围的括号,它们是必需的,以便隐式返回函数的正文表达式。

在箭头函数中使用显式返回语句(注意在函数体周围添加花括号):

const newArray = portArray.map(value => {
  return {
    label: value,
    value: value 
  }
};

答案 2 :(得分:1)

您提供的代码非常令人困惑,但我认为我明白了您的问题。由于map返回一个新数组,假设你有这个数组:var portArray = [1,4];你可以像这样使用map:

function manipulateArray(data) {
  return data.map((value) => {
    return {label: value, value: value};
  }
}

var newArray = manipulateArray(portArray);

这种方式newArray将等于[{label:1, value:1}, {label:4, value:4}]

你应该阅读地图&#39;文档:MDN