在数组中查找对象并从中获取值以显示在选择列表中

时间:2016-09-01 11:17:43

标签: arrays reactjs javascript-objects

我有一个字符串值(例如“表1”),我需要用它来查找数组中的特定对象,如下所示:

<input type="text" id="textbox" required />

找到该对象后,我需要从列键中取值并将其显示在选择列表中。

我知道如何处理第二部分,但是我首先要访问该对象,因为我遇到了麻烦。我试图在React组件渲染中执行此操作。

对此的任何帮助将不胜感激。

感谢您的时间。

3 个答案:

答案 0 :(得分:14)

如果您需要获取包含title: 'Table 1'的数组中的所有项目,则可以使用.filter Example。,如果您只需要第一项title: 'Table 1'您可以使用.find Example

var App = React.createClass({
  columns: function(condition) {
    return this.props.data
      .filter((e) => e.title === condition)
      .map(e => e.columns)
      .reduce((prev, current) => prev.concat(current), [])
      .map((column, index) => <p key={ index }>{ column.name }</p>)
  },

  render: function() {
    const condition = 'Table 1';
    return <div>{ this.columns( condition ) }</div>;
  }
});

const data = [{
  lookups: [], 
  rows: [{data: {a: 1, b: 2}}, {data: {a: 3, b: 4}}], 
  title: "Table 1", 
  columns: [{name: "a"}, {name: "b"}]
}, {
  lookups: [],
  rows: [{data: {c: 5, d: 6}}, {data: {c: 7, d: 8}}],
  title: "Table 2",
  columns: [{name: "c"}, {name: "d"}]
}, {
  lookups: [],
  rows: [],
  title: "Table 1",
  columns: [{name: "m"}, {name: "n"}]
}];

ReactDOM.render(
  <App data={ data } />,
  document.getElementById('container')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="container"></div>

答案 1 :(得分:9)

对于第一部分,使用find方法:

function findArrayElementByTitle(array, title) {
  return array.find((element) => {
    return element.title === title;
  })
}

它将返回条件element.title === title成立的第一个数组元素。

答案 2 :(得分:0)

以下方法将返回具有特定值的所有元素(即在以下情况下为isEdit:true)。

 filterArrayElementByEdit(array) {
    return array.filter((element) => {
      return element.isEdit === true;
    })
  }

以下方法将仅返回第一个元素。

 findArrayElementByEdit(array) {
    return array.find((element) => {
      return element.isEdit === true;
    })
  }