Как создать массив javascript и сохранить данные другого массива в созданный массив в Javascript

#javascript #vue.js

#javascript #vue.js

Вопрос:

создайте массив javascript и сохраните другой массив данных в созданный массив в Javascript. Я попробовал это следующим упомянутым способом.

Код:

 var vvv=this.new_products.length-this.quote.lines.length;
      let mmm={};
      if(vvv > 0){
        for(var i = 0; i <= vvv-1; i  ){
          mmm ={...this.new_products[this.quote.lines.length i]};
        }
      }
      console.log(mmm);
  

пример:

 this.new_products -> 
    0: {…}
    1: {…}
    2: {…}
    3: {…}
this.quote.lines ->
    0: {…}
    1: {…}
  

Вывод должен быть ->

 mmm->
    0: {…} (this.new_products[2])
    1: {…} (this.new_products[3])
  

Текущий вывод->

 {product_code: "khdbdvdjlhc de", description: "sscs", note: "csccc", pinned: false, third_party: 0, …}
  

Мой пробный код не работает. Пожалуйста, помогите мне решить эту проблему.

Комментарии:

1. Непонятно, чего вы хотите. Приведите пример ввода и какой будет желаемый результат для этого ввода.

2. console.log(mmm); это не определено, mmm находится вне блока, в котором он был объявлен

3. @PedroLima Я обновил вопрос тем, что вы ожидали.

4. @lissettdm я обновил вопрос ожидаемым результатом.

5. Итак, mmm должно быть this.new_products[2] верно?

Ответ №1:

Я предположил, что вам нужны остатки элементов:

  let m = [];
 for(var i = 0; i <= vvv - 1; i  ){
    m.push({...this.new_products[this.quote.lines.length i]});
 }
  

Комментарии:

1. Я отредактировал свой проверенный код с вашим ответом. Но сейчас я получаю новую ошибку. > Ошибка в обработчике v-on: «Ошибка типа: присвоение постоянной переменной».

2. Да, замените const mmm={}; для let mmm={};

3. Теперь это работает. Но теперь есть еще одна проблема. Проблема теперь всегда сохраняется внутри mmm последнего. Если есть 2 изменения, это добавляет только последнее изменение. не оба изменения. Как я могу это решить?

4. Можете ли вы добавить пример с проблемой, с которой вы столкнулись?

5. @user_v12 Я обновил свой ответ, я предположил, что m — это тип массива

Ответ №2:

Вы можете создать мелкую копию, используя оператор ... распространения следующим образом:

var array = ["thing1", "thing2"];

var array2 = [...array];

Если вам нужно сделать глубокую копию, одним из самых простых способов является использование функции cloneDeep() от Lodash, подобной этой:

import _ from 'lodash';

var array = ["thing1", "thing2"];

var array2 = _.cloneDeep(array);