比较两个对象数组,如果第二个数组中存在,则返回第一个数组中的元素为true,否则返回false。

时间:2019-03-01 00:13:27

标签: javascript reactjs

我有2个对象数组

const options = [
  { value: 'opt1', label: 'opt1' },
  { value: 'opt2', label: 'opt2' },
  { value: 'opt3', label: 'opt3' },
  { value: 'opt4', label: 'opt4' }
]

const selected = [
  { value: 'opt1', key: '1' },
  { value: 'opt2', key: '2' }
]

我需要比较这两个数组并得出结果

result =
  { 'opt1', true },
  { 'opt2', true },
  { 'opt3', false },
  { 'opt4', false }
]

因为第二个数组中存在opt1和opt2。我知道有很多方法,但是最短的方法是什么?

3 个答案:

答案 0 :(得分:1)

我个人可以想象的最短的一个。

        private void EditChildListView_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (editChildListView.Items.Count >= 0)
        {
            int selectedIndex = editChildListView.SelectedIndices[0];
            editNameBox.Text = Children[selectedIndex].name;
        }
    }

答案 1 :(得分:1)

您可以使用函数map首先获取所选对象的映射值,然后使用逻辑来询问{{1}中是否存在值的逻辑来映射数组options。 }数组。最后,使用computed-property-names构建所需的输出。

selected
const options = [  { value: 'opt1', label: 'opt1' },  { value: 'opt2', label: 'opt2' },  { value: 'opt3', label: 'opt3' },  { value: 'opt4', label: 'opt4' }],
      selected = [  { value: 'opt1', key: '1' },  { value: 'opt2',key: '2' }],
      mapped = selected.map(({value}) => value),
      result = options.map(({value}) => ({[value]: mapped.includes(value)}));

console.log(result);

答案 2 :(得分:1)

reverse(0x0000.toShort)   
0x0000.toShort



reverse(0xFFFF.toShort)

0xFFFF.toShort



reverse(0xAAAA.toShort)  

0x5555.toShort 

reverse(0x1234.toShort)

0x2C48.toShort