【问题标题】:Validate if property value is false in all objects of array and pick value of property from first three maximum objects of array验证数组的所有对象中的属性值是否为假,并从数组的前三个最大对象中选择属性值
【发布时间】:2020-08-18 13:12:42
【问题描述】:

我有一个具有属性的对象数组

let array = [{value: "None", selected: false, name: "None"},
{value: "sample utternace", selected: false, name: "sample utternace"},
{value: "sample", selected: false, name: "sample"}]
  1. 如果所有对象的“selected”属性为“false”,我需要从这些对象数组中进行验证。

  2. 如果是,那么我需要为前三个选择属性“值”的值,如果“无”值除外。

  3. 如果数组大小小于属性“value”的最少 2 个值,则应选择属性“value”的最多 3 个值

试过了:

let newArray = [];
let sendValues: boolean;
for (let i = 0; i < array.length; i++) { // validate if all no value selected
    if (array[i].selected === true) {
       sendValues = true;
       break;
       } else {
         break;
       } 
     }                         
      if (sendValues) {                  
                    
            } else {
                for (let i = 0; i < 4; i++) {
                    if (array[i].value === "None") {
                        newArray.push();
                    } else {
                        newArray.push(array[i].value);
                    }
                }           
            }   
        }

【问题讨论】:

  • 你能把问题分解成带编号的案例吗?很难理解你的问题。
  • 请点击编辑,然后点击[&lt;&gt;] 并创建一个minimal reproducible example - 您的代码不完整。如果您将let sendValues: boolean = false; 更改为let sendValues =false;,则甚至不需要打字稿标签
  • if (sendValues) { } 应该做什么?
  • 这是无法理解的If length of array is less and cant pick first three at least i need to pick one or two to minimum. - 少于什么?
  • 我建议对Array 类型的filter 方法进行一些研究...

标签: javascript arrays typescript object key-value


【解决方案1】:

第 1 部分:

let array = [{value: "None", selected: false, name: "None"},
{value: "sample utternace", selected: false, name: "sample utternace"},
{value: "sample", selected: false, name: "sample"}]

console.log(array.every(({selected}) => !selected)); // test all have false

第 2 部分

let array = [{value: "None", selected: false, name: "None"},
{value: "sample utternace", selected: false, name: "sample utternace"},
{value: "sample", selected: false, name: "sample"}]

if (array.every(({selected}) => !selected) ) {
  console.log(array.filter( ({value}) => value !="None")); // filter on value=None
}

第三部分

let array = [{value: "None", selected: false, name: "None"},
{value: "sample utterance1", selected: false, name: "sample utterance1"},
{value: "sample utterance2", selected: false, name: "sample utterance2"},
{value: "sample utterance3", selected: false, name: "sample utterance3"},
{value: "sample", selected: false, name: "sample"}]

const getSample = array => {
  let arr = [];
  if (array.every(({ selected }) => !selected)) {
    arr = array.filter( ({ value }) => value != "None")
    if (arr.length >= 3) return arr.slice(0, 3)
  }
  return []; // or some other size
};

console.log(getSample(array))

【讨论】:

  • 感谢@mplungjan 第 2 部分:如果数组有 N 个元素,我如何才能只选择前 3 个值?
猜你喜欢
  • 2020-10-15
  • 2018-12-26
  • 2016-11-02
  • 1970-01-01
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 2018-11-14
相关资源
最近更新 更多