Чтобы проверить массив на неизменяемость - PullRequest
0 голосов
/ 26 июня 2018

Подскажите, как проверить массив на?В конечном результате тест должен проверить, изменился ли массив, и если да, выдать ошибку, которую нельзя изменить.

import { List, Set } from "immutable"
export let list1: number[] = [1, 2, 3];

export function mass(list1) {
   let listFromArray = List(list1); 
    if (listFromArray == List(list1)) {
      throw new Error("immutable");
    }
        return listFromArray; 
  };

Код теста:

import {mass} from "./sum"
import { List, Set, isImmutable } from "immutable"

test('check for variability', () => {
  const list1: number[] = [1, 2, 3];
  const listFromArray = mass(list1);
  const expectedResult = List([1, 2, 3]);
  expect(expectedResult).toThrowError('Error'); 
});

1 Ответ

0 голосов
/ 26 июня 2018

I думаю вы ищете сравнение массива.

Для этого сценария вы можете сравнить элементы в массиве ..

Есть многоОдним из таких способов является использование метода every : \

var arr_1 = [1,2,3];
var arr_2 = [1,2,3];

if(arr_1.every((v,i) => v === arr_2[i])){
  alert("si");
}
else{
    alert("no")
}

Конечно, это не оптимизировано, так как вы можете проверить длину и т. д., прежде чеместь ранние выходы.

Похожие: Как сравнивать массивы в JavaScript?

https://jsfiddle.net/tspqeyz3/

В случае с immutable.js существует equalsметод, который будет проверять соответствие значений.(Пример NodeJS)

const { Map, is } = require('immutable')
const map1 = Map({ a: 1, b: 2, c: 3 })
const map2 = Map({ a: 1, b: 2, c: 3 })
map1 !== map2     // two different instances are not reference-equal
map1.equals(map2) // but are value-equal if they have the same values
is(map1, map2)    // alternatively can use the is() function

Таким образом, в этой ситуации вы сможете определить равенство двух.

...